读取非定界 asciif 文件 Apache Pig Latin

Posted

技术标签:

【中文标题】读取非定界 asciif 文件 Apache Pig Latin【英文标题】:Read non delimited asciif file Apache Pig Latin 【发布时间】:2016-07-08 19:22:24 【问题描述】:

我正在尝试读取 Apache Pig Latin 中的文本文件,其中包含包含每一行的非定界 ascii。也就是说,该行中的每一列都在该行中的特定位置开始和结束。

示例定义:

+--------+----------------+--------------+
| Column | Start Position | End Position |
+--------+----------------+--------------+
| A      | 1              | 6            |
+--------+----------------+--------------+
| B      | 8              | 11           |
+--------+----------------+--------------+
| C      | 13             | 15           |
+--------+----------------+--------------+

样本数据:

+---+---+---+---+---+---+---+----+---+----+----+----+----+----+----+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8  | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
+---+---+---+---+---+---+---+----+---+----+----+----+----+----+----+
| s | a | m | p | l | e |   | d  | a | t  | a  |    |    | h  | i  |
+---+---+---+---+---+---+---+----+---+----+----+----+----+----+----+
| d | u | d | e |   |   |   | hi |   |    |    |    | b  | r  | o  |
+---+---+---+---+---+---+---+----+---+----+----+----+----+----+----+

预期输出:

sample, data, hi
dude, hi, bro

如何在 Pig 中阅读此内容? PigStorage 似乎不够灵活,无法进行位置分隔,只能使用字符串分隔(逗号、制表符等)。

【问题讨论】:

【参考方案1】:

看起来 Apache 为这个特定的用例提供了一个加载器:

LOAD 'data.txt' USING org.apache.pig.piggybank.storage.FixedWidthLoader('1-6, 8-11, 13-15', 'SKIP_HEADER') AS (a, b, c); 

https://pig.apache.org/docs/r0.16.0/api/

【讨论】:

以上是关于读取非定界 asciif 文件 Apache Pig Latin的主要内容,如果未能解决你的问题,请参考以下文章

Java扫描程序,定界符和行尾

Python如何从文件读取数据

用于在 Raspberry Pi 上读取和播放 WAV 文件的 ALSA 应用程序

Python从文件中读取数据

在phpmyadmin安装后,Raspberry Pi webserver无法读取php文件

RT-Thread ART-PI 学习笔记:TouchGFX通过文件系统读取图片