将数据从猪输出到hbase

时间:2015-02-16 19:48:00

标签: hbase apache-pig data-warehouse cloudera-cdh hbasestorage

我无法在cloudera cdh3中将数据从pig加载到hbase。它在我转储数据时向我显示数据,但是当我尝试使用store命令将数据从pig放入hbase时,它能够找到该表并启动mapreduce任务。但最终它显示以下错误消息 - >

  

无法从" test / NYSE_daily_prices_Q.csv"

中读取数据

并在最后

  

2015-02-16 11:29:44,166 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 失败!   2015-02-16 11:29:44,168 [main]错误org.apache.pig.tools.grunt.GruntParser - 错误2999:意外的内部错误。行键无效   日志文件的详细信息:/home/cloudera/pig_1424114902913.log

这是我使用的代码。有人可以帮我解决问题。

  

data = LOAD' /test/NYSE_daily_prices_Q.csv'使用PigStorage(',')AS(交换:chararray,符号:chararray,日期:chararray,stock_price_open:float,stock_price_high:float,stock_price_low:float,stock_price_close:float,stock_volume:int,stock_price_adj_close:float );

     

转储数据;

     

存储数据INTO' hbase:// NYStockDetails'使用org.apache.pig.backend.hadoop.hbase.HBaseStorage('信息:交换信息:符号信息:日期信息:stock_price_open信息:stock_price_high信息:stock_price_low信息:stock_price_close信息:stock_volume信息:stock_price_adj_close') ;

1 个答案:

答案 0 :(得分:1)

当你在本地执行命令时(我假设你说你转储数据时的意思),你的命令LOAD '/test/NYSE_daily_prices_Q.csv'能够指向本地文件系统上的特定文件。

当您执行附加了HBase导出的相同命令时,仅启用地图的MapReduce作业开始。映射器将在群集上的随机节点上运行,因此不一定能访问{I},我认为只在一个节点上本地存储了NYSE_daily_prices_Q.csv。因此,当它尝试加载到HBase时会出错。

解决方法是将此文件添加到HDFS,然后从那里加载,即LOAD 'hdfs://my-hdfs-location/test/NYSE_daily_prices_Q.csv'