python+大数据day8 hive-DML语句

本文详细介绍了Hive中的DML语句,包括如何使用load数据加载到Hive表中,从本地文件系统和HDFS加载数据,并展示了insert语句的数据插入。此外,还涵盖了查询数据的基本操作,如select、group by、having、order by和limit。
摘要由CSDN通过智能技术生成

Hive SQL DML语法之加载数据:

Hive SQL-DML-Load加载数据:

在Hive中建表成功之后,就会在HDFS上创建一个与之对应的文件夹,且 文件夹名字就是表名   文件夹父路径是由参数hive.metastore.warehouse.dir控制,默认值是 /user/hive/warehouse ;不管路径在哪里,只有把数据文件移动到对应的表文件夹下面,Hive才能映射解析成功;   最原始暴力的方式就是使用 hadoop fs –put |-mv等方式直接将数据移动到表文件夹下; 但是, Hive官方推荐使用Load命令将数据加载到表中
load:所谓加载是指: 将数据文件移动到与Hive表对应的位置,移动时是纯 复制 移动 操作。 数据load加载到表中时,Hive不会对表中的数据内容进行任何转换,任何操作。

 load

--step1 建表 --建表 student_local 用于演示从本地加载数据 use itheima; create table if not exists student_local( num int, name string, gender string, age int, dept string) row format delimited fields terminated by ","; --建表 student_HDFS 用于演示从HDFS加载数据 create table if not exists student_HDFS( num int, name string, gender string, age int, dept string) row format delimited fields terminated by ","; --step2 加载数据 --从本地加载数据 数据位于HS2(node1)本地文件系统 本质是hadoop fs -put上传操作 load data local inpath '/root/hivedata/students.txt' into table student_local; --local 是纯复制操作 (这里本地指的是hive服务器所在本地) --从HDFS加载数据 数据位于HDFS文件系统根目录下 本质是hadoop fs -mv 移动操作 --先把数据上传到HDFS上 hadoop fs -put /root/hivedata/studemts.txt/ load data inpath '/students.txt' into table student_HDFS; --从HDFS加载是纯移动操作

 

均能成功导入数据。

insert

Hive官方推荐加载数据的方式:
清洗数据成为结构化文件,再使用Load语法加载数据到表中。这样的效率更高。
也可以使用insert语法把数据插入到指定的表中,最常用的配合是
编写一个完整的音乐推荐系统涉及到大量的代码和组件,这里我会给你提供一个简化版的大致框架,展示了如何结合PythonHadoop、Spark、Hive以及协同过滤推荐算法的基本步骤。由于实际项目中需要考虑数据预处理、模型训练、存储、服务等多个环节,下面只是一个基础版本的例子: ```python # 导入必要的库 from pyspark.sql import SparkSession from pyspark.mllib.recommendation import ALS from pyspark.sql.types import * # 创建SparkSession spark = SparkSession.builder.appName('MusicRecommendationSystem').getOrCreate() # 使用Hive连接数据库读取用户听歌历史数据 # 假设表名为songs_history, 用户ID列名user_id, 歌曲ID列name song_df = spark.read.format("jdbc") \ .option("url", "jdbc:mysql://localhost/mysongdb") \ .option("driver", "com.mysql.jdbc.Driver") \ .option("dbtable", "songs_history") \ .option("user", "username") \ .option("password", "password") \ .load() # 数据清洗和转换 data_rdd = song_df.rdd.map(lambda x: (x.user_id, x.name)) # 使用Spark MLlib的ALS算法进行协同过滤 rank = 10 # 推荐度数 numIterations = 15 # 迭代次数 model = ALS.train(data_rdd, rank, numIterations) # 预测用户对未听过的歌曲评分 predictions = model.predictAll(song_df.select("user_id").distinct().collect()) # 结果持久化到Hive表 recommendations_df = predictions.toDF(["userId", "musicId", "prediction"]) recommendations_df.write.insertInto("recommendations") #
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值