我有一个通过 HBase Java api 加载的 HBase 表,如下所示:
put.add(Bytes.toBytes(HBaseConnection.FAMILY_NAME), Bytes.toBytes("value"), Bytes.toBytes(value));
(其中变量 value
是一个普通的 java float。)
我继续使用 Pig 加载它,如下所示:
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).
对于每个浮点值。身份证打印精美。
我正在运行:
- Apache Hadoop 0.20.2.05
- pig 0.9.2
- Hbase 0.92.0
我的问题:为什么 pig 不能处理这些浮点值?我做错了什么?
最佳答案
原来你必须添加一个施法者。像这样:
USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('family:value', '-loadKey true -limit 5 -caster HBaseBinaryConverter')
关于hadoop - 使用 Pig 加载 Hbase 表。 float 给出 FIELD_DISCARDED_TYPE_CONVERSION_FAILED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9480788/