无法读取输入文件:使用 DBStorage 将猪存储到 MYSQL

Posted

技术标签:

【中文标题】无法读取输入文件:使用 DBStorage 将猪存储到 MYSQL【英文标题】:Unable to read input file : Pig store to MYSQL using DBStorage 【发布时间】:2016-01-21 06:43:12 【问题描述】:

我正在尝试使用猪脚本中的 DBStorage 将数据存储到 mysql。 当我运行脚本时,出现无法读取输入文件的错误。 而当我尝试转储以存储相同的数据文件时,它工作正常。 示例猪脚本:

%default DATABASE_HOST 'localhost';
%default DATABASE_NAME 'Test';
%default DATABASE_USER 'username';
%default DATABASE_PASS 'password';
%default DATABASE_DRIVER 'com.mysql.jdbc.Driver';
%default DATABASE_TYPE 'mysql';



A = LOAD '/tmp/TestDivya/Pig/PigSQLTest.txt' using PigStorage() as (name: chararray);
STORE A into 'test' using org.apache.pig.piggybank.storage.DBStorage('$DATABASE_DRIVER', 'jdbc:$DATABASE_TYPE://$DATABASE_HOST/$DATABASE_NAME',  '$DATABASE_USER', '$DATABASE_PASS', 'INSERT INTO Test(name) VALUES (?)');

HadoopVersion   PigVersion      UserId  StartedAt       FinishedAt      Features
2.7.1.2.3.4.0-3485      0.15.0.2.3.4.0-3485     hdfs    2016-01-21 01:34:552016-01-21 01:35:07      UNKNOWN

Failed!

Failed Jobs:
JobId   Alias   Feature Message Outputs
job_1453263223178_0042  A       MAP_ONLY        Message: Job failed!    hdfs://ip-xxx-xx-xx-xxx.ap-southeast-1.compute.internal:8020/user/hdfs/test,

Input(s):
Failed to read data from "/tmp/TestDivya/Pig/PigSQLTest.txt"

Output(s):
Failed to produce result in "hdfs://ip-xxx-xx-xx-xxx.ap-xxxxxx-1.compute.internal:8020/user/hdfs/test"

Counters:
Total records written : 0
Total bytes written : 0
Spillable Memory Manager spill count : 0
Total bags proactively spilled: 0
Total records proactively spilled: 0

Job DAG:
job_1453263223178_0042

我的集群设置在具有 Hortonworks HDP 2.3.4 并使用 HDP MYSQL 数据库存储猪输出的 EC2 上。

非常感谢您的指点。

谢谢,

【问题讨论】:

【参考方案1】:

我找到了解决方案。 必须在 pig.properties 文件中添加 mysql 连接器作为附加 jars。 它奏效了。 在猪控制台中添加它,没有帮助。

谢谢

【讨论】:

以上是关于无法读取输入文件:使用 DBStorage 将猪存储到 MYSQL的主要内容,如果未能解决你的问题,请参考以下文章

将猪结果存储到本地文件

如何将猪输出存储到蜂巢表?

将猪拉丁正则表达式代码转换为 Google BigQuery

一种从Mysql读取表数据到Pig的方法

将猪变量的值从一个动作传递到 Oozie 中的另一个动作

无法在引导模块窗口中读取未定义输入文件的属性“0”