我知道我们可以使用Spark SQL加载镶木地板文件并使用Impala但是想知道我们是否可以使用Hive做同样的事情.我一直在阅读很多文章,但我仍然感到困惑.
简单地说,我有一个镶木地板文件 - 比如users.parquet.现在我对如何从users.parquet加载/插入/导入数据到hive(显然是在表中)感到震惊.
如果我遗漏了明显的东西,请告诉或指出我正确的方向.
使用镶木地板文件元数据创建配置表
https://phdata.io/examples-using-textfile-and-parquet-with-hive-and-impala/
使用镶木地板工具获取镶木地板文件的架构,详情请查看链接http://kitesdk.org/docs/0.17.1/labs/4-using-parquet-tools-solution.html
并使用文件顶部的架构构建表,有关详细信息,请查看Create Hive表以从parquet/avro架构中读取镶木地板文件
获取模式至关重要,因为您必须先在Hive中创建具有相应模式的表,然后将其指向镶木地板文件.
我有一个类似的问题,我在一个虚拟机中有数据,不得不将其移动到另一个虚拟机.这是我的演练:
了解有关原装镶文件(位置和架构):
describe formatted users;
与show create table users;
后者将让你的模式的时候了,也指向你HDFS的位置hdfs://hostname:port/apps/hive/warehouse/users
了解有关表格分区的信息 show partitions users;
将表的Parquet文件从HDFS复制到本地目录
hdfs dfs -copyToLocal /apps/hive/warehouse/users
将它们移动到另一个群集/ VM或您希望它们到达的位置
CREATE USERS ...
使用相同的架构在目标上创建users表
CREATE TABLE users ( name string, ... ) PARTITIONED BY (...) STORED AS PARQUET;
现在,将Parquet文件移动到相应的文件夹中(如果需要,请查看您刚刚创建的表的位置)
hdfs dfs -ls /apps/hive/warehouse/users/ hdfs dfs -copyFromLocal ../temp/* /apps/hive/warehouse/
对于每个分区,您必须将Hive指向相应的子目录:( alter table users add partition (sign_up_date='19991231') location '/apps/hive/warehouse/users/sign_up_date=19991231';
您可能希望使用bash脚本执行此操作)
这对我有用,希望它有所帮助.