Spark 2.0 ayrıştırma yapabilir. 0+
Yerleşik csv veri kaynağını doğrudan kullanabilirsiniz:
spark.read.csv(
"some_input_file.csv", header=True, mode="DROPMALFORMED", schema=schema
)
veya herhangi bir dış bağımlılıkları dahil olmadan
(spark.read
.schema(schema)
.option("header", "true")
.option("mode", "DROPMALFORMED")
.csv("some_input_file.csv"))
.
Spark < 2.0.0:
yerine genel bir durumda önemsiz değildir olduğunu manuel ayrıştırma ait
, ben spark-csv
öneriyoruz:
Kıvılcım CSV yolu dahil olduğundan emin olun (--packages
, --jars
, --driver-class-path
)
ve aşağıdaki gibi veri yüklemek:
(df = sqlContext
.read.format("com.databricks.spark.csv")
.option("header", "true")
.option("inferschema", "true")
.option("mode", "DROPMALFORMED")
.load("some_input_file.csv"))
Bu hatalı biçimlendirilmiş çizgileri bırakarak, yükleme, şema çıkarımı işleyebilir ve p gerektirmez Python'dan JVM'ye veri aktarmak.
Not:
Şemayı biliyorsanız, o şema çıkarımı önlemek ve DataFrameReader
onu geçmek daha iyidir. Eğer üç sütun varsayarsak - tamsayı, çift ve dize: alanları (örn a,b,"1,2,3",c
) içindedir
from pyspark.sql.types import StructType, StructField
from pyspark.sql.types import DoubleType, IntegerType, StringType
schema = StructType([
StructField("A", IntegerType()),
StructField("B", DoubleType()),
StructField("C", StringType())
])
(sqlContext
.read
.format("com.databricks.spark.csv")
.schema(schema)
.option("header", "true")
.option("mode", "DROPMALFORMED")
.load("some_input_file.csv"))
O kadardı, tek bir sütun içeren bir satır, teşekkürler. – Kernael
Yerleşik 'csv' kütüphanesini kullanarak tüm çıkışları işlemek için ayrıştırmak daha iyidir çünkü basitçe virgülle bölme eğer değerlerin içinde virgüller varsa işe yaramaz. – sudo
Csv'yi ayrıştıracak pek çok araç var, tekerleği yeniden icat etmeyin – Stephen