Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 用清管器加载Hbase表。浮点给出字段\u丢弃\u类型\u转换\u失败_Hadoop_Hbase_Apache Pig - Fatal编程技术网

Hadoop 用清管器加载Hbase表。浮点给出字段\u丢弃\u类型\u转换\u失败

Hadoop 用清管器加载Hbase表。浮点给出字段\u丢弃\u类型\u转换\u失败,hadoop,hbase,apache-pig,Hadoop,Hbase,Apache Pig,我有一个通过HBase Java api加载的HBase表,如下所示: put.add(Bytes.toBytes(HBaseConnection.FAMILY_NAME), Bytes.toBytes("value"), Bytes.toBytes(value)); 其中,变量值为普通java浮点 我继续用清管器将其加载,如下所示: raw = LOAD 'hbase://tableName' USING org.apache.pig.backend.hadoop.hbase.HBaseSt

我有一个通过HBase Java api加载的HBase表,如下所示:

put.add(Bytes.toBytes(HBaseConnection.FAMILY_NAME), Bytes.toBytes("value"), Bytes.toBytes(value));
其中,变量值为普通java浮点

我继续用清管器将其加载,如下所示:

raw = LOAD 'hbase://tableName' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('family:value', '-loadKey true -limit 5') AS (id:chararray, value:float);
但是,当我将其与以下内容一起转储时:

dump raw;
我得到:

[main] WARN  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Encountered Warning FIELD_DISCARDED_TYPE_CONVERSION_FAILED 5 time(s).
对于每个浮点值。身份证印得很好

我正在运行:

ApacheHadoop 0.20.2.05 猪0.9.2 Hbase 0.92.0
我的问题:为什么pig不能处理这些浮点值?我做错了什么?

原来你必须添加一个施法者。像这样:

USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('family:value', '-loadKey true -limit 5 -caster HBaseBinaryConverter')

原来你必须加一个脚轮。像这样:

USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('family:value', '-loadKey true -limit 5 -caster HBaseBinaryConverter')

请按以下方式尝试:

test = load '/user/training/user' using PigStorage(',') 
  as (user_id, name, age:int, country, gender);

加载的默认分隔符为tab。

请按以下方式尝试:

test = load '/user/training/user' using PigStorage(',') 
  as (user_id, name, age:int, country, gender);

加载的默认分隔符是tab。

请在不使用As-id:chararray,value:float部分的情况下尝试。它倒什么?在调用Bytes.toBytes之前,请尝试将值转换为字符串,以了解问题所在。我按照您的建议删除了as子句,但由于数据是二进制的,所以只能得到外观奇怪的Udf-8字符。请在不使用as id:chararray,value:float部分的情况下尝试。它倒什么?在调用Bytes.toBytes之前,请尝试将值转换为字符串,以了解问题所在。我按照您的建议删除了as子句,但由于数据是二进制的,所以得到的是外观奇怪的Udf-8字符。限制是否按预期对您起作用?我给了这个命令字段=加载'hbase://documents'使用org.apache.pig.backend.hadoop.hbase.hbastorage'info:collection','-loadKey true-limit 5-caster HBaseBinaryConverter'作为id:chararray,字段:chararray;然后使用“转储字段”。mapreduce之后,hbase显示260条加载和转储的记录,而不是5条。我不明白为什么我会限制你的工作?我给了这个命令字段=加载'hbase://documents'使用org.apache.pig.backend.hadoop.hbase.hbastorage'info:collection','-loadKey true-limit 5-caster HBaseBinaryConverter'作为id:chararray,字段:chararray;然后使用“转储字段”。mapreduce之后,hbase显示260条加载和转储的记录,而不是5条。我不明白为什么