如何使用 Pig 从列中解析 JSON 字符串

2024-01-23

我有 tsv 日志文件,其中一列由 json 字符串填充。

我想用以下内容解析该列JsonLoader in a Pig脚本。 我看到很多例子JsonLoader用于每行只有一个 json 字符串的情况。我还有其他专栏想要跳过,但我不知道该怎么做。

该文件如下所示:

foo    bar    {"version":1; "type":"an event"; "count": 1}
foo    bar    {"version":1; "type":"another event"; "count": 1}

我怎样才能做到这一点?


您正在寻找 Elephant Bird 中提供的 JsonStringToMap UDF:

样本文件:

foo     bar     {"version":1, "type":"an event", "count": 1}
foo     bar     {"version":1, "type":"another event", "count": 1}

猪脚本:

REGISTER /path/to/elephant-bird.jar;
DEFINE JsonStringToMap com.twitter.elephantbird.pig.piggybank.JsonStringToMap();
raw = LOAD '/tmp/file.tsv' USING PigStorage('\t') AS (col1:chararray,col2:chararray,json_string:chararray);
parsed = FOREACH raw GENERATE col1,col2,JsonStringToMap(json_string);
ILLUSTRATE parsed; -- Just to show the output

预处理(JSON 作为字符数组/字符串):

-------------------------------------------------------------------------------------------------------
| raw     | col1:chararray    | col2:chararray    | json_string:chararray                             | 
-------------------------------------------------------------------------------------------------------
|         | foo               | bar               | {"version":1, "type":"another event", "count": 1} | 

后处理(JSON 作为地图):


-------------------------------------------------------------------------------------------------
| parsed     | col1:chararray    | col2:chararray    | json:map(:chararray)                     | 
-------------------------------------------------------------------------------------------------
|            | foo               | bar               | {count=1, type=another event, version=1} | 
-------------------------------------------------------------------------------------------------

两天前有人问过同样的问题:如何在 Pig 中解码来自列的 JSON? https://stackoverflow.com/questions/24874989/how-do-you-decode-json-in-pig-that-comes-from-a-column/24925809#24925809

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Pig 从列中解析 JSON 字符串 的相关文章

  • 如何使用 keycloak 强制每个客户端登录(最佳实践?)

    我们目前正在实施 keycloak 但我们面临着一个问题 我们不确定解决它的最佳方法是什么 我们有不同的网络应用程序使用单点登录 并且运行良好 我们遇到的问题是 当我们在一个 Web 应用程序中使用 sso 登录 然后在另一个 Web 应用
  • hadoop中reducer的数量

    我正在学习hadoop 我发现减速器的数量非常令人困惑 1 reducer的数量与partition的数量相同 2 reducer 的数量是 0 95 或 1 75 乘以 节点数 每个节点的最大容器数 3 减速机数量设定为mapred re
  • LogRecord 没有预期的字段

    在使用 logging 模块的Python中 文档承诺LogRecord实例将具有许多属性 这些属性在文档中明确列出 然而 情况似乎并不总是如此 当我不使用日志记录模块的 basicConfig 方法时 下面的程序显示属性 asctime
  • 如何配置应用程序中的所有记录器

    Python 的日志记录模块允许模块或类定义自己的记录器 不同的记录器可以有不同的处理程序 其中一些可能选择记录到文件 而另一些则选择记录到标准输出 现在 我的应用程序使用其中几个模块 每个模块都有自己的记录器 这些记录器具有各种处理程序
  • Hive - 线程安全的自动递增序列号生成

    我遇到一种情况 需要将记录插入到特定的 Hive 表中 其中一列需要是自动递增的序列号 即在任何时间点都必须严格遵循 max value 1 规则 记录从许多并行的 Hive 作业插入到这个特定的表中 这些作业每天 每周 每月批量运行 现在
  • 从远程托管上的 PHP 获取 PHP 错误日志

    是否有 PHP 函数或其他方式以字符串形式获取 PHP 错误日志 我需要这个 因为我无法访问在其他人的服务器上运行的站点的错误日志 他提出通过电子邮件将错误日志发送给我 但这不太方便 有什么方法可以将错误日志输出到 PHP 页面吗 我意识到
  • Java Logger 未记录到 Netbeans 中的输出

    我正在 Netbeans 中使用 Maven 启动一个 Java 项目 我编写了一些代码来使用 Logger 类进行日志记录 但是 日志记录似乎不起作用 在程序开始时 我运行 Logger getLogger ProjectMainClas
  • Morgan Logger + Express.js:写入文件并在控制台中显示

    我正在尝试将 Morgan 与 Express js 结合使用来编写日志文件 同时也在控制台上显示我的日志 我正在使用这段代码 var logger require morgan var accessLogStream fs createW
  • 有没有办法替代Android中的标准Log?

    有没有办法以某种方式拦截对 android 中标准 Log 的调用并执行其他操作 在桌面 Java 中 人们通常会得到一些记录器 因此有多种方法可以安装不同的日志处理程序 实现 但是 Android似乎对Log有静态调用 我找不到任何有关替
  • 如何在 Python 中的函数入口、内部和退出处进行日志记录

    我希望能够使用 Python 日志记录工具在我的代码中进行简单且一致的日志记录 我能够执行以下操作 我希望所有现有 未来的模块和函数都有 输入 和 完成 日志消息 我不想添加相同的代码片段来定义日志记录参数 如下所示don t want t
  • 将数据从 oracle 移动到 HDFS,处理并从 HDFS 移动到 Teradata

    我的要求是 将数据从 Oracle 移至 HDFS 处理HDFS上的数据 将处理后的数据移至 Teradata 还需要每 15 分钟执行一次整个处理 源数据量可能接近50GB 处理后的数据也可能相同 在网上搜索了很多之后 我发现 PRARO
  • 使用大矩阵操作

    我必须使用 big matrix 对象 并且无法计算某些函数 让我们考虑以下大矩阵 create big matrix object x lt as big matrix matrix sample 1 10 20 replace TRUE
  • 适用于 Hadoop 的 DynamoDB 输入格式

    我必须使用 Hadoop mapreduce 处理保留在 Amazon Dynamodb 中的一些数据 我在互联网上搜索 Dynamo DB 的 Hadoop InputFormat 但找不到它 我对 Dynamo DB 不熟悉 所以我猜测
  • Heroku Rails 应用程序级别不记录日志

    我在 Heroku 上有一个 Rails 应用程序 它没有在应用程序级别进行日志记录 当前版本 红宝石1 9 3 导轨3 1 3 在 config environment development rb 中有以下几行 config logge
  • 用于网络服务器日志分析的软件? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我可以得到一些关于 Apache 2 2 访问日志文件的优秀日志分析软件的建议 最好有一些理由 吗 我听说过韦巴利泽 http www w
  • 如何从hdfs读取文件[重复]

    这个问题在这里已经有答案了 我在 project1目录下的hadoop文件系统中有一个文本文件名mr txt 我需要编写 python 代码来读取文本文件的第一行 而不将 mr txt 文件下载到本地 但我无法从 hdfs 打开 mr tx
  • InvalidRequestException(为什么:empid 如果包含 Equal,则不能被多个关系限制)

    这是关于我从 Apache Spark 查询 Cassandra 时遇到的问题 Spark 的正常查询工作正常 没有任何问题 但是当我使用关键条件进行查询时 出现以下错误 最初 我尝试查询复合键列族 它也给出了与下面相同的问题 由以下原因引
  • 在远程 Glassfish 上进行日志记录和/或调试

    我有个问题 我在远程 Glassfish 实例上部署了一个 Web 服务 现在我需要一些简单的日志或调试系统来纠正我的代码 使用简单的打印会更好 我的想法是使用 glassfish 日志文件 因为我可以从管理 GUI 访问它 但它不起作用
  • HDFS 中的文件数量与块数量

    我正在运行单节点 hadoop 环境 当我跑的时候 hadoop fsck user root mydatadir block 我真的对它给出的输出感到困惑 Status HEALTHY Total size 998562090 B Tot
  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se

随机推荐

  • 使用 Spring 4 注解配置 404 错误页面

    我有一个 Spring MVC 项目 使用 Spring 4 我的服务器是 tomcat 7 我正在尝试制作一个404页面 我尝试了很多方法 但我做不到 我缺少什么 这是 WebAppContext Configuration Compon
  • 将 PNG 图像保存到 WP7 的隔离存储

    这里有很多关于图像到隔离存储的问题 但我找不到适合我的情况的好的答案 所以我们开始吧 我正在取一个 png来自网络的图像 并将其另存为BitmapImage 目的 当它完成加载时 在BitmapImage ImageOpened事件 我想将
  • 是否可以在运行时跳过 Cucumber-JVM 的场景

    我想将标签 skiponchrome 添加到场景中 这应该在使用 Chrome 浏览器运行 Selenium 测试时跳过该场景 这样做的原因是因为某些场景在某些环境中有效 而在其他环境中无效 这甚至可能不是特定于浏览器测试的 并且可以应用于
  • 在 Python 中绘制多个图,但具有偏移范围

    我想绘制 e 和 nu 的函数 其中 e 是偏心率 nu 是真正的异常 我只看椭圆轨道所以0
  • 在C++中使用组合时如何决定类属性应该是指针还是值?

    请参阅此示例 大学的班级有一个主任和很多学生所以我的班级会是这样的 a class University Director d Student list 1000 or b class University Director d Stude
  • 将 pandas 的skipna 全局默认设置设置为 False

    对于某些 Pandas 函数 例如 sum cumsum 和 cumprod 有一个 Skipna 选项 默认设置为 True 这会给我带来问题 因为错误可能会默默地传播 所以我总是明确地将skipna设置为False sum df df
  • 使用 Json.Net 序列化 NameValueCollection 的自定义子类

    我有以下类 但尝试序列化为 Json 失败 class HL7 NameValueCollection public List
  • 角度,将范围传递给函数(将范围作为变量传递?)

    我试图将作用域传递给函数 但似乎无法让它正常工作 这就是我所拥有的 ng click clickFunction scope1 the function scope clickFunction function passedScope pa
  • `tf.set_random_seed()` 相当于种子操作?

    标题几乎说明了一切 你知道是否存在相当于tf set random seed 用于张量流中的操作种子 我试图在定义为两个不同图形的两个精确神经网络处初始化完全相同的权重 所以我想知道是否有一种方法可以为所有操作全局设置操作种子 而不必为每个
  • 将特殊字符作为消息发送;

    我正在运行 Kannel 将其用作 SMS 网关 但我刚刚意识到手机上没有收到应有的一些特殊符号 和 作为三角形发送 我该如何解决这个问题 可能是字符集问题 短信通常使用 GSM7 字符集接收 并且您提供的字符具有不同的 GSM7 数字代码
  • Conda:创建虚拟环境

    我正在尝试创建一个虚拟环境 我已按照两者的步骤进行操作Conda https conda io docs user guide tasks manage environments html and Medium https medium c
  • gulp-mocha 如何传​​递编译器标志?

    我正在尝试使用gulp mocha 模块 https github com sindresorhus gulp mocha但无法找出传递编译器标志的好方法 有没有办法将其包含在我的 gulp 任务中 也许在一个单独的管道中 从命令行运行摩卡
  • RequireJs 优化器忽略插件

    当我使用优化器时 我想忽略 require js 插件的使用 define css styles css 这总是给我这个错误Cannot read property normalize of undefined 我已将此选项设置为需要优化器
  • 您对 C# 缩小有什么建议吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要缩小一些 Silverlight cs 和 xmal 文件中的一些 C 代码 对于维护一个代码库和
  • Java 构建路径

    我有一个关于在代码运行时更改构建路径的快速问题 例如 我有一个类 它从互联网下载 jar 文件 然后将其放入与运行代码相同的目录中 如果可能的话 如何将 jar 加载到构建路径中以访问 jar 文件中的类 一些建议的修改 评论 去除jar
  • 如何判断Windows上是否安装了Java虚拟机?

    使用代码 如何确定 Windows 中是否安装了 Java VM 及其版本 假设您希望通过批处理文件以编程方式确定这一点 您可以使用reg exe工具 安装在windows system32 这个工具的烦人之处在于 无法让它仅返回退出代码
  • 编译curl后路径问题

    我使用以下命令克隆存储库后编译了curl buildconf configure with libssh2 make sudo make install 但是 在 sudo make install 之后 如果 I run curl V 我
  • Mysql 中的行级锁定

    我的表中有 5 行 1 到 5 我想要第 2 行锁定以进行某些更新 同时如果有人尝试更新第 4 行 那么他应该能够更新 我正在使用下面的代码尝试此操作 但我觉得它将锁定放在表级别而不是行级别 第一节 START TRANSACTION SE
  • iOS 导航栏项目图像大小

    我想定制我的NavigationBar按钮并使用我自己的图像 问题是尺寸应该是多少 我发现按钮大小应该是40 40 所以视网膜图像应该是80 80 这些是尺寸文档 https developer apple com ios human in
  • 如何使用 Pig 从列中解析 JSON 字符串

    我有 tsv 日志文件 其中一列由 json 字符串填充 我想用以下内容解析该列JsonLoader in a Pig脚本 我看到很多例子JsonLoader用于每行只有一个 json 字符串的情况 我还有其他专栏想要跳过 但我不知道该怎么