6

我已经确定如何使用 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
4

3 回答 3

11

你应该能够做到这一点:

sqlContext.read.parquet(path).printSchema()

来自Spark 文档

// Print the schema in a tree format
df.printSchema()
// root
// |-- age: long (nullable = true)
// |-- name: string (nullable = true)
于 2015-10-29T20:33:00.117 回答
1

好的,我认为我有一个好的方法,只需查看第一行即可推断该方案。(虽然不确定这有多优雅,如果它碰巧是空的怎么办?我相信必须有更好的解决方案)

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;
}
于 2015-03-06T18:12:10.117 回答
0

parquetFile() 的结果是具有 .printSchema() 方法的 SchemaRDD (1.2) 或 DataFrame (1.3)。

于 2015-03-21T14:37:24.917 回答