我已經輸入CSV文件,如下閱讀CSV與字符串文件到RDD火花
123,john,ny,"new-emp-in"
111,rock,sf,"recently,promoted"
100,smith,la,"10.101.0129-name,string"
,所以我怎麼能閱讀和創建RDD?
com.databricks:spark-csv_2.11:1.5.0支持這個,但我不能使用它。
我已經輸入CSV文件,如下閱讀CSV與字符串文件到RDD火花
123,john,ny,"new-emp-in"
111,rock,sf,"recently,promoted"
100,smith,la,"10.101.0129-name,string"
,所以我怎麼能閱讀和創建RDD?
com.databricks:spark-csv_2.11:1.5.0支持這個,但我不能使用它。
在spark 2.0+中,您可以使用SparkSession.read
方法讀取多種格式,其中之一是csv。使用這種方法,你可以做到以下幾點:
df = spark.read.csv(filename)
或爲RDD剛:
rdd = spark.read.csv(filename).rdd
更新
在看到您的評論看一看CSV Data Source for Apache Spark 1.x。我相信這是導致Spark 2.0中包含讀取方法的一部分。
使用舊版本的Spark,您無法直接讀取csv。但是你可以包含Databrick的csv jar並使用他們的Python API來實現。
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true',
inferschema='true').load('cars.csv')
df.select('year',
'model').write.format('com.databricks.spark.csv').save('newcars.csv')
這個有用嗎?您有任何後續問題嗎? – alpeshpandya
什麼火花版本您使用的? 'val df = spark.read.option(「header」,false).option(「inferSchema」,true).csv(「*。csv」)'適用於我的spark 2.0.2。 – Psidom
是的,但我使用1.x :( – user491
除了認真考慮升級到spark2.x,如果你真的不能使用databrick的csv包(出於神祕的原因!),最簡單的方法是使用'textFile'方法來讀取文件,並使用正則表達式來查找引號之間包含逗號的列/數據,並將其替換爲其他內容。因此,這是基本的數據準備操作,一旦完成了這些操作,就可以使用簡單的'rdd.map(lambda行:row.split(「,」))'操作,使每行作爲逗號分隔列表 – Pushkr