我们可以直接将Parquet文件加载到hive中吗?

xggvc2p6  于 2021-06-02  发布在  Hadoop
关注(0)|答案(4)|浏览(1000)

我知道我们可以使用sparksql和impala加载parquet文件,但是我想知道我们是否可以使用hive进行同样的加载。我已经读了很多文章,但我还是很困惑。
简单地说,我有一个Parquet文件-比如users.parquet。现在,如何将users.parquet中的数据加载/插入/导入到hive中(显然是在表中)让我大吃一惊。
如果我遗漏了一些明显的东西,请给我建议或给我指出正确的方向。
使用parquet文件元数据创建配置单元表
https://phdata.io/examples-using-textfile-and-parquet-with-hive-and-impala/

wwodge7n

wwodge7n1#

获取模式是至关重要的,因为您必须首先在hive中使用适当的模式创建表,然后将其指向parquet文件。
我遇到了一个类似的问题,我在一个虚拟机中有数据,必须将其移动到另一个虚拟机。以下是我的演练:
了解原始Parquet文件(位置和模式): 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 ... 通过使用相同的模式

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/

对于每个分区,您必须将配置单元指向相应的子目录: alter table users add partition (sign_up_date='19991231') location '/apps/hive/warehouse/users/sign_up_date=19991231'; (您可能希望使用bash脚本执行此操作)
对我有用,希望对我有帮助。

2izufjch

2izufjch2#

不知道它是否有点“黑客”,但我使用齐柏林飞艇(与Ambari运送)。您只需结合spark2执行以下操作:

%spark2
import org.apache.spark.sql.SaveMode

var df = spark.read.parquet("hdfs:///my_parquet_files/*.parquet");
df.write.mode(SaveMode.Overwrite).saveAsTable("imported_table")

这种方法的优点是,您还可以导入许多Parquet文件,即使它们具有不同的模式。

q8l4jmvw

q8l4jmvw3#

你可以试试这个。。。导出/导入适用于所有类型的文件格式,包括配置单元中的parquet。这是一个通用的概念,您可以根据自己的需求进行一些调整,比如从本地(或)跨集群加载
注意:在执行单个步骤时,可以使用硬代码代替$,在从脚本运行时,也可以将“hdfs path”、“schema”和“tablename”作为参数传递。因此,只需传递参数就可以导出/导入无限表
步骤1:hive-s-e“将表$schema_file1.$tbl_file1导出到$hdfs_data_path/$tbl_file1”;“#--从hdfs执行。
第二步:#——它同时包含数据和元数据。将它和scp压缩到目标集群
步骤3:hive-s-e“从“$hdfs_data_path/$tbl_file1”导入表$schema_file1.$tbl_file1”#--第一次导入将通过一个错误,因为表不存在,但会自动创建一个表
步骤4:hive-s-e“从“$hdfs_data_path/$tbl_file1”导入表$schema_file1.$tbl_file1”#--第二次导入将导入没有任何错误的数据,因为表现在可用
谢谢
库玛

vmpqdwk3

vmpqdwk34#

使用Parquet工具获取Parquet文件的模式,有关详细信息,请查看链接http://kitesdk.org/docs/0.17.1/labs/4-using-parquet-tools-solution.html
并使用文件顶部的模式构建表,有关详细信息,请检查create hive table以从parquet/avro模式读取parquet文件

相关问题