gpt4 book ai didi

json - 在 PIG Latin 中将字符串转换为长整型

转载 作者:可可西里 更新时间:2023-11-01 15:12:34 28 4
gpt4 key购买 nike

我正在用 Pig Latin 编写一个脚本,以便在 Hadoop 2.7.1 上的 PIG 0.15.0 中运行,该脚本获取 JSON 消息列表并处理其中的信息。 JSON 看起来像这样:

{
"var1": "xxx",
"var2": "yyy",
"var3": "zzz",
"timestamp": "1448283242297",
}

我正在使用以下命令加载文件:

rawdata = LOAD '/opt/test.json' USING JsonLoader('var1:chararray,var2:chararray,var3:chararray,timestamp: chararray');

当我尝试使用 ToDate 函数转换时间戳值时出现格式错误,因为它正在接收一个字符串,而不是 Long,因此它需要一个可读的日期。

indata = FOREACH rawdata GENERATE var1,var2,var3,ToDate(timestamp) as timel;


java.lang.IllegalArgumentException: Invalid format: "1448283242297" is malformed at "2297"

我在文档中读到不支持从 String 转换为 Long。有没有办法从该值中获取日期?

最佳答案

我不确定这是否是最佳模式,但我找到了一种方法。正如您可以从 Pig Latin 调用 java 方法一样,只需调用进行转换的方法:

define getLong InvokeForLong('java.lang.Long.parseLong','String');
rawdata = LOAD '/opt/test.json' USING JsonLoader('var1:chararray,var2:chararray,var3:chararray,timestamp: chararray');
indata = FOREACH rawdata GENERATE var1,var2,var3,ToDate(getLong(timestamp)) as timest;

你得到了正确的结果。

关于json - 在 PIG Latin 中将字符串转换为长整型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33937184/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com