我无法在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') ;
答案 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'
。