如下所示,该数据记录的用户播放某首歌曲的次数,数据包括3个字段,分别为userid(用户ID)、artistid(艺术家ID)、playcount(播放次数)。 | 用户ID | 艺术家ID | 播放次数 | | ------- | -------- | -------- | | 1000002 | 10000006 | 33 | | 1000002 | 10000007 | 8 | | 1000002 | 10000009 | 114 | | 1000002 | 10000032 | 56 | | 1000002 | 10000023 | 32 | | 1000002 | 10000056 | 68 | 使用SparkSQL相关知识对该数据进行探索分析,分析目标如下。 ① 统计非重复的用户个数。 ② 统计用户听过的歌曲总数。 ③ 找出I为“100002”用户最喜欢的3首歌曲(即播数最多的3首歌曲。)
时间: 2023-08-12 12:32:26 浏览: 144
好的,针对这个问题,我会为您提供以下SparkSQL代码:
```sql
-- 创建数据表
CREATE TABLE music (
userid BIGINT,
artistid BIGINT,
playcount BIGINT
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
-- 加载数据
LOAD DATA LOCAL INPATH 'music.txt' INTO TABLE music;
-- 统计非重复用户个数
SELECT COUNT(DISTINCT userid) AS user_count FROM music;
-- 统计用户听过的歌曲总数
SELECT COUNT(DISTINCT artistid) AS song_count FROM music;
-- 找出userid为1000002用户最喜欢的3首歌曲
SELECT artistid, SUM(playcount) AS total_playcount
FROM music
WHERE userid = '1000002'
GROUP BY artistid
ORDER BY total_playcount DESC
LIMIT 3;
```
其中,假设数据文件名为`music.txt`,其内容为:
```
1000002 10000006 33
1000002 10000007 8
1000002 10000009 114
1000002 10000032 56
1000002 10000023 32
1000002 10000056 68
```
请确保数据文件中的字段分隔符与代码中的一致。