首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Spark合并两个或多个文件内容并操作内容

使用Spark合并两个或多个文件内容并操作内容
EN

Stack Overflow用户
提问于 2017-01-06 19:54:43
回答 2查看 383关注 0票数 0

我可以用火花来做以下事情吗?我有三个文件要合并和更改内容:

  1. 具有以下内容的第一个名为column_header.tsv的文件: first_name last_name地址zip_code browser_type
  2. 具有以下内容的第二个名为data_file.tsv的文件: 约翰·多伊111号新车道,Ca 11111 34玛丽无名氏133号造物者大道,纽约44499 40迈克编码器13号UT 66499 28
  3. 第三个文件名为browser_type.tsv,内容如下: 34 Chrome 40 Safari 28 FireFox
  4. 星火处理后的final_output.tsv文件应具有contents:first_name last_name地址zip_code browser_type John 111新驱动器,Ca 11111 Chrome Mary 133 Creator Blvd,NY 44499 Safari Mike 13 browser_type 66499 FireFox

这能用火花吗?此外,我将考虑Sed或Awk,如果可能的话,使用这些工具。我知道以上使用Python是可能的,但我更喜欢使用Spark来进行数据操作和更改。有什么建议吗?提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-01-06 22:25:41

这是在awk,以防万一。请注意文件顺序:

代码语言:javascript
复制
$ awk 'NR==FNR{ a[$1]=$2;next }{ $NF=($NF in a?a[$NF]:$NF) }1' file3 file1 file2

输出:

代码语言:javascript
复制
first_name last_name address zip_code browser_type
John Doe 111 New Drive, Ca 11111 Chrome
Mary Doe 133 Creator Blvd, NY 44499 Safari
Mike Coder 13 Jumping Street UT 66499 FireFox

解释:

代码语言:javascript
复制
NR==FNR {                            # process browser_type file
    a[$1]=$2                         # remember remember the second of ...
    next }                           # skip to the next record
{                                    # process the other files
    $NF=( $NF in a ? a[$NF] : $NF) } # replace last field with browser from a
1                                    # implicit print
票数 1
EN

Stack Overflow用户

发布于 2017-01-06 21:13:11

这是可能的。读取标题:

代码语言:javascript
复制
with open("column_header.tsv") as fr:
    columns = fr.readline().split()

读取data_file.tsv

代码语言:javascript
复制
users = spark.read.option("delimiter", "\t").csv("data_file.tsv").toDF(*columns)

读取called browser_type.tsv

代码语言:javascript
复制
browsers = spark.read.csv("called browser_type.tsv") \
    .toDF("browser_type", "browser_name")

加入:

代码语言:javascript
复制
users.join(browser, "browser_type", "left").write.csv(path)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41513340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档