如何从命令行或 spark shell 显示 parquet 文件的方案(包括类型)?
How to show the scheme (including type) of a parquet file from command line or spark shell?
我已经确定了如何使用 spark-shell 来显示字段名称,但它很丑而且不包括类型
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
println(sqlContext.parquetFile(path))
打印:
ParquetTableScan [cust_id#114,blar_field#115,blar_field2#116], (ParquetRelation /blar/blar), None
好的,我想我有一个可行的方法,只需查看第一行即可推断出方案。 (虽然不确定这有多优雅,如果它恰好是空的怎么办?我相信一定有更好的解决方案)
sqlContext.parquetFile(p).first()
在某些时候打印:
{
optional binary cust_id;
optional binary blar;
optional double foo;
}
fileSchema: message schema {
optional binary cust_id;
optional binary blar;
optional double foo;
}
parquetFile() 的结果是具有 .printSchema() 方法的 SchemaRDD (1.2) 或 DataFrame (1.3)。
你应该可以做到这一点:
sqlContext.read.parquet(path).printSchema()
来自Spark docs:
// Print the schema in a tree format
df.printSchema()
// root
// |-- age: long (nullable = true)
// |-- name: string (nullable = true)
我已经确定了如何使用 spark-shell 来显示字段名称,但它很丑而且不包括类型
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
println(sqlContext.parquetFile(path))
打印:
ParquetTableScan [cust_id#114,blar_field#115,blar_field2#116], (ParquetRelation /blar/blar), None
好的,我想我有一个可行的方法,只需查看第一行即可推断出方案。 (虽然不确定这有多优雅,如果它恰好是空的怎么办?我相信一定有更好的解决方案)
sqlContext.parquetFile(p).first()
在某些时候打印:
{
optional binary cust_id;
optional binary blar;
optional double foo;
}
fileSchema: message schema {
optional binary cust_id;
optional binary blar;
optional double foo;
}
parquetFile() 的结果是具有 .printSchema() 方法的 SchemaRDD (1.2) 或 DataFrame (1.3)。
你应该可以做到这一点:
sqlContext.read.parquet(path).printSchema()
来自Spark docs:
// Print the schema in a tree format
df.printSchema()
// root
// |-- age: long (nullable = true)
// |-- name: string (nullable = true)