Pig - 使用 pig 加载 Word 文档(.doc 和 .docx)

Posted

技术标签:

【中文标题】Pig - 使用 pig 加载 Word 文档(.doc 和 .docx)【英文标题】:Pig - load Word documents (.doc & .docx) with pig 【发布时间】:2013-08-29 09:03:23 【问题描述】:

我无法使用 pig 加载 Microsoft Word 文档(.doc 或 .docx)。事实上,当我尝试这样做时,通过使用 TextLoader()、PigStorage() 或根本没有加载器,它不起作用。输出是一些奇怪的符号。

我听说我可以用 JAVA 编写一个自定义加载器,但它似乎真的很难,我不明白我们如何编写其中的一个。

我想将所有 .doc 文件内容放在一个 chararray 包中,以便以后使用过滤器函数对其进行处理。

我该怎么办?

谢谢

【问题讨论】:

【参考方案1】:

他们是对的。由于 .doc 和 .docx 是二进制格式,简单的文本加载器将无法工作。您可以编写 UDF 以便能够将文件直接加载到 Pig 中,或者您可以进行一些预处理以将所有 .doc 和 .docx 文件转换为 .txt 文件,以便 Pig 将加载这些 .txt 文件。 This 链接可以帮助您开始寻找转换文件的方法。

但是,我仍然建议学习编写 UDF。预处理文件会增加可避免的大量开销。

更新:以下是我过去用于编写 java(加载)UDF 的一些资源。 One, Two.

【讨论】:

感谢您的回答。你知道我在哪里可以找到编写 UDF 的好而简单的教程吗? @shanks_roux 我添加了一些资源。他们没有明确地引导你完成整个过程,但你应该能够从他们那里修补一些东西。

以上是关于Pig - 使用 pig 加载 Word 文档(.doc 和 .docx)的主要内容,如果未能解决你的问题,请参考以下文章

Apache Pig - 如何获取多个包之间的匹配元素数量?

使用 Sqoop 将来自 MySQL 的数据加载到 PIG

Apache Pig 中的 HCatalog 可以只加载特定分区吗?

Pig:使用 .pig_schema 模式文件加载数据

使用 PIG 加载 Hive 表的问题

使用 Pig 加载 CSV