【问题标题】:Hadoop Pig "Load" issue when loading a csv file whose value field contains comma and a special character加载值字段包含逗号和特殊字符的 csv 文件时,Hadoop Pig“加载”问题
【发布时间】:2016-05-13 22:59:05
【问题描述】:

我有一个 csv 文件,其示例数据如下所示。
姓名,工作,薪水
-------------------------
杰克,IT,12,00 美元
-------------------------
约翰,人力资源,24,00 美元
--------------------------

当我使用此命令加载此数据时
A = LOAD '/USER/XYZ/PIG/FILENAME.CSV' USING PIGSTORAGE(',') as (NAME:chararray,JOB:chararray, Salary:chararray) ;

"$12,00" 中的逗号被视为分隔符,仅加载 $12。 有什么解决方法吗? 是否可以将薪水字段加载为整数(也忽略“$”符号)..

【问题讨论】:

  • 所以你的定界符是“|”为什么不用“|”作为分隔符。
  • 好吧,只是为了表示目的..我在问题中添加了一个类似结构的表格。实际上,逗号是分隔符。

标签: csv hadoop apache-pig


【解决方案1】:

请按照以下步骤操作:

  1. 不用PigStorage使用,org.apache.pig.piggybank.storage.CSVExcelStorage()

  2. 不使用 chararray,将薪水的数据类型指定为 float

【讨论】:

    【解决方案2】:

    使用“|”加载文件作为分隔符。对于 $ 符号,使用 REPLACE 命令,然后将字段转换为 int

    A = LOAD '/USER/XYZ/PIG/FILENAME.CSV' USING PIGSTORAGE('|') as (NAME:chararray,JOB:chararray, Salary:chararray) ;
    A1 = FOREACH A GENERATE NAME,JOB,(int)REPLACE(Salary,'([^a-zA-Z0-9.,\\s]+)','');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 2021-12-03
      相关资源
      最近更新 更多