如何阅读pyspark中的特定列?

Posted

技术标签:

【中文标题】如何阅读pyspark中的特定列?【英文标题】:How to read specific column in pyspark? 【发布时间】:2017-05-29 10:55:46 【问题描述】:

我是 pyspark 的新手。我想从输入文件中读取特定列。我知道如何在 pandas 中做到这一点

df=pd.read_csv('file.csv',usecols=[0,1,2])

但是pyspark中是否有类似这个操作的功能呢?

【问题讨论】:

【参考方案1】:

您好,您可以使用地图来选择特定的列

from pyspark import SQLContext
from pyspark import SparkConf, SparkContext
conf = SparkConf().setAppName("ReadCSV")
sc = SparkContext(conf=conf) 
sqlctx = SQLContext(sc)
df=sc.textFile("te2.csv") \
   .map(lambda line: line.split(";")) \
   .map(lambda line: (line[0],line[3])) \
   .toDF()

【讨论】:

【参考方案2】:

读取 CSV 文件通常不像 @zlidime 的回答所暗示的那样简单。

如果行的列内容中有; 字符怎么办?然后你需要解析引号,并提前知道引号字符是什么。 或者,也许您想跳过标题,或者解析它以获得列名。

相反,如here 所述,您可以使用dataframes

df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load("te2.csv")

要查询列,您可以使用:

df.col("col_1").cast("int")

【讨论】:

以上是关于如何阅读pyspark中的特定列?的主要内容,如果未能解决你的问题,请参考以下文章

如何在数据框的开头移动 pyspark 数据框的特定列

如何将包含多个键值对的列拆分为pyspark中的不同列

PySpark 根据特定列重新分区

如何从 PySpark DataFrame 的列中分离特定字符并使用它们形成一个新列?

Pyspark:如果具有特定 id 的任何行包含 null,如何根据另一列派生新列的值?

如何删除 Spark 表列中的空格(Pyspark)