使用 Apache Pig 将数据加载到 Hbase 表时,如何排除 csv 或文本文件中没有数据(只有空格)的列?
Posted
技术标签:
【中文标题】使用 Apache Pig 将数据加载到 Hbase 表时,如何排除 csv 或文本文件中没有数据(只有空格)的列?【英文标题】:While loading data using Apache Pig to Hbase table, How to exclude columns where there is no data (just whitespace) in csv or text file for a row? 【发布时间】:2017-11-21 12:50:20 【问题描述】:假设我有一个名为 customer_table 的表,其中数据作为列族,现在我有一个文本文件如下:
custno,firstname,lastname,age,profession
(这些是列名,不存在于文本或 csv 文件中)
1,John,Wright,54,Coach
2,Luke,,20,Student
3,Mike,Jordan,26,
4,William,Jones,21,Teacher
在第 2 行和第 3 行,列的姓氏和职业分别没有值。
现在我想要
STORE variable INTO 'hbase://customer_table' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage()
仅针对特定行排除那些列(没有数据或只有空格)。请让我知道如何做到这一点。
【问题讨论】:
【参考方案1】:您可以在 foreach ... generate 语句中使用嵌套的 biconditionals。另一种选择是使用 UDF。
作为备注,无论哪种方式,您都会丢失架构,因此您的字段将是无名的,并且值将是 pig 中的字节数组。我个人从未尝试将这样的行写入 hbase。因此不知道它们的外观以及您如何访问它们。我希望你有充分的理由做这样的事情。
【讨论】:
以上是关于使用 Apache Pig 将数据加载到 Hbase 表时,如何排除 csv 或文本文件中没有数据(只有空格)的列?的主要内容,如果未能解决你的问题,请参考以下文章
将 Parquet 数据加载到 PIG 时如何避免 UnsatisfiedLinkError