在 python 中将 RDD 转换为 spark 数据帧,然后访问特定的列值

数据挖掘 pyspark
2022-03-10 07:12:54

我想从我从 csv 文件中读取的数据集中访问特定列的值。数据集存储在 pyspark RDD 中,我希望将其转换为 DataFrame。我正在使用以下代码:

from pyspark.sql import SQLContext
sqlc=SQLContext(sc)
df=sc.textFile(r'D:\Home\train.csv')
df=sqlc.createDataFrame(df)

但它显示错误:

Can not infer schema for type: <class 'str'>

df 的前 2 行是:

['"id","product_uid","product_title","search_term","relevance"',
 '2,100001,"Simpson Strong-Tie 12-Gauge Angle","angle bracket",3']

我认为第一行正在制造这个问题。此外,我想创建存储从第二行到最后一行的值的数据框。(不是第一行,因为它将是标题)。我怎样才能做到这一点?我已经搜索过了,但找不到任何解决方案。提前致谢。

1个回答

要读取 csv 文件以触发数据帧,您应该使用 spark-csv。 https://github.com/databricks/spark-csv

df = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('cars.csv')

如何使用 spark csv 如果您直接从终端使用 pyspark。而不是打电话

$SPARKHOME/bin/pyspark

你必须使用

$SPARKHOME/bin/pyspark --packages com.databricks:spark-csv_2.11:1.4.0 

然后使用上面的代码。

如果您使用的是 ipython + findspark,则必须修改您的 PYSPARK_SUBMIT_ARGS(在启动 ipython 之前)

export PYSPARK_SUBMIT_ARGS=--master local[4] --packages "com.databricks:spark-csv_2.11:1.4.0" pyspark-shell