Gol*_*num 6 python hadoop multiple-columns apache-spark pyspark
我正在阅读如下数据集.
f = sc.textFile("s3://test/abc.csv")
Run Code Online (Sandbox Code Playgroud)
我的文件包含50多个字段,我希望为每个字段分配列标题,以便稍后在我的脚本中引用.
我如何在PySpark中做到这一点?DataFrame的方式是什么?
PS - Spark的新手.
以下是使用DataFrame添加列名的方法:
假设你的csv有分隔符','.在将数据传输到DataFrame之前,请按如下方式准备数据:
f = sc.textFile("s3://test/abc.csv")
data_rdd = f.map(lambda line: [x for x in line.split(',')])
Run Code Online (Sandbox Code Playgroud)
假设数据有3列:
data_rdd.take(1)
[[u'1.2', u'red', u'55.6']]
Run Code Online (Sandbox Code Playgroud)
现在,您可以在使用toDF()以下方法将此RDD传输到DataFrame时指定列名:
df_withcol = data_rdd.toDF(['height','color','width'])
df_withcol.printSchema()
root
|-- height: string (nullable = true)
|-- color: string (nullable = true)
|-- width: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)
如果未指定列名,则会获得一个默认列名为"_1","_ 2",...的DataFrame:
df_default = data_rdd.toDF()
df_default.printSchema()
root
|-- _1: string (nullable = true)
|-- _2: string (nullable = true)
|-- _3: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)
这个问题的解决方案实际上取决于您正在运行的Spark版本。假设您使用的是Spark 2.0+,则可以将CSV作为DataFrame读取,并使用toDF添加列,这对于将RDD转换为DataFrame或将列添加到现有数据帧非常有用。
filename = "/path/to/file.csv"
df = spark.read.csv(filename).toDF("col1","col2","col3")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17437 次 |
| 最近记录: |