【问题标题】:Spark : Modify CSV file and write to other folderSpark:修改CSV文件并写入其他文件夹
【发布时间】:2017-02-10 03:12:32
【问题描述】:

伙计们,

我们有一个要求,我们想对 CSV 文件进行小幅转换,然后使用 spark 将其写入其他 HDFS 文件夹。

例如 /input/csv1.txt(至少 4 GB 文件)

ID,Name,Address
100,john,some street

输出应该在文件中 (output/csv1.txt)。基本上解析地址后会添加两个新列(记录顺序应与输入文件相同)

ID,Name,Address,Country,ZipCode
100,Name,Address,India,560001

看来用 spark 不容易做到这一点。

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:

    嗯,我不知道您所说的不容易是什么意思 - spark-csv 包让恕我直言很容易。根据您运行的 Spark 版本,您需要执行以下操作之一:

    火花 2.x

    val df = spark.read.csv("/path/to/files/")
    df
     .withColumn("country", ...)
     .withColumn("zip_code", ...)
     .write
     .csv("/my/output/path/")
    

    火花 1.x

    val df = sqlContext.read.format("com.databricks.spark.csv").load(/path/to/my/files/")
    df.     
     .withColumn("country", ...)
     .withColumn("zip_code", ...)
     .write
     .format("com.databricks.spark.csv")
     .save("/my/output/path/")
    

    请注意,我只是将withColumn 放在这里 - 您可能正在加入其他一些包含国家和邮政编码的数据框,但我的示例只是为了说明您如何使用 spark-csv 包(其中已内置到 Spark 2.x 中)

    【讨论】:

    • 嗨,我们尝试运行它,但我们在输出目录中获取了 PART 文件(part-00000)。相反,我们需要获取输出目录中的文件名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    相关资源
    最近更新 更多