java - 如何在 Pig Latin 中将十六进制转换为十进制?

标签 java hadoop apache-pig

我的示例文件有一列包含四位十六进制数 (7AA0),我需要将其转换为十进制数 (31392)。知道怎么做吗?

我在互联网上看到了以下代码,它使用 Java 内置类进行反之亦然,但我不知道如何反过来做:

--invoker.pig
define hex InvokeForString('java.lang.Integer.toHexString', 'int');
divs  = load 'NYSE_daily' as (exchange, symbol, date, open, high, low,
        close, volume, adj_close);
nonnull = filter divs by volume is not null;
inhex = foreach nonnull generate symbol, hex((int)volume);

最佳答案

define hex InvokeForInt('java.lang.Integer.parseInt','String int','true');
a = LOAD 'hex.txt' using PigStorage() as (hex:chararray);
b = foreach a generate hex($0, 16);
dump b;

如果 hex.txt 包含:

abc
10
1
1abc

上面的代码会打印

(2748)
(16)
(1)
(6844)

关于java - 如何在 Pig Latin 中将十六进制转换为十进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33811327/

相关文章:

Java 接口(interface)方法论 : Should every class implement an interface?

java - Hadoop 作业执行所花费的时间

regex - Pig - 使用正则表达式提取字符串

hadoop - 通过抛出错误对组内的记录进行抽样

java - 如何使用 apache poi 4.1.0 设置单元格的背景颜色

java - PaseclCase 字符串转大写,下划线分隔

hadoop - 错误 : org. apache.hadoop.hbase.MasterNotRunningException: null+hbase+hadoop

hadoop - 从分区表复制 Hive

hadoop - 通过 pig 脚本传递参数时出错

Java 8 Stream 函数将变位词列表分组到列表映射中