如何将猪输出存储到蜂巢表?
Posted
技术标签:
【中文标题】如何将猪输出存储到蜂巢表?【英文标题】:How to store pig output to the hive table? 【发布时间】:2017-05-02 06:37:55 【问题描述】:我在 Azure 上有 HDInsight 集群,在 hdfs(Azure 存储)中有 .csv
文件。
使用 apache-pig 我想处理这些文件并将输出存储在配置单元表中。为此,我编写了以下脚本:
A = LOAD '/test/input/t12007.csv' USING PigStorage(',') AS (year:chararray,ArrTime:chararray,DeptTime:chararray);
describe A;
dump A;
store A into 'testdb.tbl3' using org.apache.hive.hcatalog.pig.HCatStorer();
此脚本成功加载文件,描述结构并使用转储显示数据,但在执行存储命令时会引发以下错误:
2017-05-02 06:18:41,476 [main] ERROR org.apache.pig.PigServer - exception during parsing: Error during parsing. Could not resolve org.apache.hive.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]
Failed to parse: Pig script failed to parse: <file script.pig, line 4, column 33> pig script failed to validate: org.apache.pig.backend.executionengine.ExecException: ERROR 1070: Could not resolve org.apache.hive.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]
Caused by: <file script.pig, line 4, column 33> pig script failed to validate: org.apache.pig.backend.executionengine.ExecException: ERROR 1070: Could not resolve org.apache.hive.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]
Caused by: org.apache.pig.backend.executionengine.ExecException: ERROR 1070: Could not resolve org.apache.hive.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]
2017-05-02 06:18:41,484 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve org.apache.hive.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]
【问题讨论】:
尝试使用以下命令运行您的脚本: pig -useHCatalog your_scriptname.pig 我正在 ambari 中执行脚本。我在执行脚本时添加了 -useHCatalog 参数。 【参考方案1】:pig -useHCatalog
来自 Pig HCatalog documentation
使用 HCatalog 运行 Pig
Pig 不会自动拾取HCatalog
罐子。要引入必要的 jar,您可以在 pig 命令中使用标志或设置环境变量 PIG_CLASSPATH
和 PIG_OPTS
,如下所述。要引入适当的 jar 以使用 HCatalog
,只需在脚本中包含以下标志:
替代方式:
指定HCatalog
jar 的位置并将带有jar 路径的REGISTER
语句添加到脚本顶部,如下所示。
REGISTER /usr/username/client/lib/hive-hcatalog-core-1.2.1.2.3.0.0-2557.jar;
您的路径可能因集群中的安装而异。您可以使用命令找到此 jar 位置:locate *hcatalog-core*
HCatStorer
HCatStorer
与 Pig 脚本一起使用,将数据写入HCatalog-managed
表。
用法
HCatStorer
通过 Pig 存储语句访问。
STORE A INTO 'tablename'
USING org.apache.hive.hcatalog.pig.HCatStorer();
【讨论】:
我正在 ambari 中执行脚本。我添加了 -useHCatalog 作为参数。它仍然给出错误。 您的 Hive 表是否存在?如果没有,您需要先创建表。以上是关于如何将猪输出存储到蜂巢表?的主要内容,如果未能解决你的问题,请参考以下文章