hadoop—在单个示例中将pig输出存储到配置单元表中

ha5z0ras  于 2021-05-29  发布在  Hadoop
关注(0)|答案(4)|浏览(193)

我想将pig输出插入到配置单元表中(配置单元中的表已经用精确的模式创建了),只需要将输出值插入到表中。我不想使用通常的方法,首先将其存储到一个文件中,然后从配置单元读取该文件,然后插入到表中。我需要减少已经完成的额外跳数。
有可能吗。如果是,请告诉我怎么做?
谢谢

r6hnlfcb

r6hnlfcb1#

您可以使用hcatalog存储它
使用org.apache.hive.hcatalog.pig.hcatstorer()将数据存储到“tablename”;
请参见下面的链接https://acadgild.com/blog/loading-and-storing-hive-data-into-pig

xwbd5t1u

xwbd5t1u2#

下面以“employee”表为例说明了两种将pig输出存储到hive表中的方法(前提条件是应该已经创建配置单元表)

A =  LOAD 'EMPLOYEE.txt' USING PigStorage(',') AS(EMP_NUM:int,EMP_NAME:chararray,EMP_PHONE:int);

方法1:使用hcatalog

// dump pig result to Hive using Hcatalog 
store A into 'Empdb.employee' using org.apache.hive.hcatalog.pig.HCatStorer();

(或)
方法2:使用hdfs物理定位

// dump pig result to external hive warehouse location
STORE A INTO 'hdfs://<<nmhost>>:<<port>>/user/hive/warehouse/Empdb/employee/' USING PigStorage(',')

;

xxhby3vn

xxhby3vn3#

最好的方法是使用hcatalog并将数据写入hive表。
使用org.apache.hive.hcatalog.pig.hcatstorer()将最终的_数据存储到“hive_table_name”中;
但在存储数据之前,请确保“final\u data”数据集中的列与表的模式完全匹配并Map。
然后像这样运行pig脚本:pig script.pig-usehcatalog

xmjla07d

xmjla07d4#

好 啊。在hdfs目录的某处创建一个具有架构布局的外部配置单元表。让我们说

create external table emp_records(id int,
                                  name String,
                                  city String)
                                  row formatted delimited 
                                  fields terminated by '|'
                                  location '/user/cloudera/outputfiles/usecase1';

只需创建一个如上所述的表,而无需将任何文件加载到该目录中。
现在编写一个pig脚本,我们读取一些输入目录的数据,然后在存储该pig脚本的输出时使用如下所示

A =  LOAD 'inputfile.txt' USING PigStorage(',') AS(id:int,name:chararray,city:chararray);
B = FILTER A by id > = 678933;
C = FOREACH B GENERATE id,name,city;
STORE C INTO '/user/cloudera/outputfiles/usecase1' USING PigStorage('|');

确保pigscript中最终foreach语句的目标位置、分隔符和架构布局与hiveddl架构匹配。

相关问题