Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 读取pySpark(2.3)中的本地csv文件_Apache Spark_Pyspark_Apache Spark Sql_Apache Spark Mllib_Pyspark Sql - Fatal编程技术网

Apache spark 读取pySpark(2.3)中的本地csv文件

Apache spark 读取pySpark(2.3)中的本地csv文件,apache-spark,pyspark,apache-spark-sql,apache-spark-mllib,pyspark-sql,Apache Spark,Pyspark,Apache Spark Sql,Apache Spark Mllib,Pyspark Sql,我正在使用pySpark 2.3,试图读取如下所示的csv文件: 0,0.000476517230863068,0.0008178378961061477 1,0.0008506156837329876,0.0008467260987257776 但它不起作用: from pyspark import sql, SparkConf, SparkContext print (sc.applicationId) >> <property at 0x7f47583a5548>

我正在使用pySpark 2.3,试图读取如下所示的csv文件:

0,0.000476517230863068,0.0008178378961061477
1,0.0008506156837329876,0.0008467260987257776
但它不起作用:

from pyspark import sql, SparkConf, SparkContext
print (sc.applicationId)
>> <property at 0x7f47583a5548>
data_rdd = spark.textFile(name=tsv_data_path).filter(x.split(",")[0] != 1)

知道我应该如何在pySpark 2.3中阅读它吗?

首先,
textFile
存在于
SparkContext
(在repl中称为
sc
)上,而不是
SparkSession
对象上(在repl中称为
spark

其次,对于CSV数据,我建议使用CSV
DataFrame
加载代码,如下所示:

df = spark.read.format("csv").load("file:///path/to/file.csv")
您在注释中提到需要将数据作为RDD。如果您可以将所有操作保留在数据帧上而不是RDD上,那么您的性能将显著提高。但是,如果出于某种原因需要退回到RDD,您可以按照以下方式进行:

rdd = df.rdd.map(lambda row: row.asDict())

使用这种方法比使用
textFile
加载它并自己解析CSV数据要好。如果您使用
DataFrame
CSV加载,则它将正确处理所有CSV边缘情况,如引用字段。此外,如果只需要一些列,您可以在将其转换为
RDD
之前对
DataFrame
进行过滤,以避免需要将所有额外的数据带到python解释器中。

但这将生成DataFrame,对吗?我需要RDD为什么你特别需要RDD?如果使用python,数据帧将提供更好的性能。如果您真的想转换为RDD,我将更新这个示例。请尝试
DataFrame.RDD
rdd = df.rdd.map(lambda row: row.asDict())