Solución:
Puedes usar limit(n)
.
sqlContext.format('com.databricks.spark.csv')
.options(header="true", inferschema="true").load("file_path").limit(20)
Esto solo cargará 20 filas.
Tengo entendido que leer solo unas pocas líneas no es compatible con el módulo spark-csv directamente, y como un solución alterna podría simplemente leer el archivo como un archivo de texto, tomar tantas líneas como desee y guardarlo en una ubicación temporal. Con las líneas guardadas, puede usar spark-csv para leer las líneas, incluyendo inferSchema
opción (que puede que desee utilizar dado que está en modo de exploración).
val numberOfLines = ...
spark.
read.
text("myfile.csv").
limit(numberOfLines).
write.
text(s"myfile-$numberOfLines.csv")
val justFewLines = spark.
read.
option("inferSchema", true). // <-- you are in exploration mode, aren't you?
csv(s"myfile-$numberOfLines.csv")
No inferir esquema y usar limit(n)
funcionó para mí, en todos los aspectos.
f_schema = StructType([
StructField("col1",LongType(),True),
StructField("col2",IntegerType(),True),
StructField("col3",DoubleType(),True)
...
])
df_n = sqlContext.read.format('com.databricks.spark.csv').options(header="true").schema(f_schema).load(data_path).limit(10)
Nota: Si usamos inferschema="true"
, es nuevamente la misma hora, y tal vez por lo tanto lo mismo de siempre.
Pero si no tenemos idea del esquema, las soluciones de Jacek Laskowski también funcionan bien. 🙂