Hadoop 如何使用ApachePig处理未格式化的数据?

Hadoop 如何使用ApachePig处理未格式化的数据?,hadoop,mapreduce,apache-pig,Hadoop,Mapreduce,Apache Pig,我想使用ApachePig,但到目前为止,我只解析了格式化数据,如csv或逗号分隔等。 但是如果我有一些数据用“;”&@&@&@”分隔等等,我如何使用它? 就像我使用MapReduce时一样我在地图中按“;”分割数据,然后在reduce中按“@&@”再次分割数据。 另外,假设我们有一个csv文件,第一个字段的用户名是“FirstnameLastname”格式 通过上面的示例,我们可以得到完整的用户名,但是如何使Name和Lastname都不同呢?也许您可以使用第二次拆分字符串: 也可以由\\u0

我想使用ApachePig,但到目前为止,我只解析了格式化数据,如csv或逗号分隔等。

但是如果我有一些数据用“;”&@&@&@”分隔等等,我如何使用它?

就像我使用MapReduce时一样我在地图中按“;”分割数据,然后在reduce中按“@&@”再次分割数据。

另外,假设我们有一个csv文件,第一个字段的用户名是“FirstnameLastname”格式

通过上面的示例,我们可以得到完整的用户名,但是如何使Name和Lastname都不同呢?

也许您可以使用第二次拆分字符串:


可以由
\\u003B

分割,您可以在Pig中用udf执行Java或Python所能做的任何事情。Pig不打算拥有一套详尽的处理功能,而只是提供基本功能。Piggybank通过收集大量社区贡献的UDF,填补了定制代码的空白。有时候,piggybank并没有你们需要的东西。UDF编写起来非常简单,这是一件好事

  • 您可以编写一个在加载时处理数据独特结构的。自定义加载函数使用Java代码处理数据,并输出Pig所寻找的结构化列格式。客户加载程序的另一个优点是,您可以指定加载模式,这样就不必将
    写成(…)

  • 你可以写一封信。有时像
    SPLIT
    TOKENIZE
    这样的函数是不够好的。用于逐行获取数据,然后使用UDF解析该行并输出元组(然后可以将其展平为列)


谢谢你,伙计。我知道我们可以编写自定义加载程序、自定义函数等(就像我以前在mapreduce中所做的那样),但我只是想确定是否有任何内置方法?你的回答真的很有帮助。我尝试了TextLoader(),看起来不错。我没有固定格式。再次感谢brettdj,这将帮助我。你能给我发送参考链接吗,我在任何地方都没有。
raw = LOAD 'log.csv' USING PigStorage(',') AS (username: chararray, site: chararray, viwes: int);
A = LOAD 'log.csv' USING MyCustomLoader('whatever', 'parameters);
A = LOAD 'log.csv' USING TextLoader() as (line:char array);
B = FOREACH A GENERATE FLATTEN(CustomLineParser(line));