scala - 如何确保 Parquet 文件包含元数据中的行数?

标签 scala apache-spark parquet

查看来源:fast-parquet-row-count-in-sparkparquet-count-metadata-explanation

Stackoverflow 和 Spark 官方文档告诉我们 parquet 文件应该在元数据中包含行数。 Spark从1.6开始默认添加了这个

我试图看到这个“字段”,但没有运气。也许我做错了什么?有人可以告诉我如何确保某些 Parquet 文件具有此类归档吗?欢迎任何小而优质的 Parquet 文件的链接!现在,我使用参数 meta D:\myparquet_file.parquet 调用 org.apache.parquet.tools.Main ,但没有看到 count 关键字在结果中。

最佳答案

您可以使用 parquet-tools 检查 Parquet 文件:

  1. 安装parquet-tools :
pip install parquet-tools
  • 创建 Parquet 文件。我使用 Spark 创建了一个包含 3 行的小型 Parquet 文件:
  • import spark.implicits._
    
    val df: DataFrame = Seq((1, 2, 3), (4, 5, 6), (7, 8, 9)).toDF("col1", "col2", "col3")
    df.coalesce(1).write.parquet("data/")
    
  • 检查 Parquet 文件:
  • parquet-tools inspect /path/to/parquet/file
    

    输出应该类似于:

    ############ file meta data ############
    created_by: parquet-mr version 1.10.1 (build a89df8f9932b6ef6633d06069e50c9b7970bebd1)
    num_columns: 3
    num_rows: 3
    num_row_groups: 1
    format_version: 1.0
    serialized_size: 654
    
    
    ############ Columns ############
    col1
    col2
    col3
    
    ############ Column(col1) ############
    name: col1
    path: col1
    max_definition_level: 0
    max_repetition_level: 0
    physical_type: INT32
    logical_type: None
    converted_type (legacy): NONE
    
    ############ Column(col2) ############
    name: col2
    path: col2
    max_definition_level: 0
    max_repetition_level: 0
    physical_type: INT32
    logical_type: None
    converted_type (legacy): NONE
    
    ############ Column(col3) ############
    name: col3
    path: col3
    max_definition_level: 0
    max_repetition_level: 0
    physical_type: INT32
    logical_type: None
    converted_type (legacy): NONE
    

    您可以在 file meta data 下看到节num_rows表示 parquet 文件中行数的字段。

    关于scala - 如何确保 Parquet 文件包含元数据中的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70351129/

    相关文章:

    Scala 函数不按名称用大括号(大括号)传递

    class - 在 Scala 中,你能创建一个带有引用其他类或特征的变量的实例吗?

    apache-spark - 无法将 Spark 作为 Hive 执行引擎

    apache-spark - 如何增加在 Yarn UI 上显示的 "memory total"?

    scala - Apache Spark在SQL表达式中启动

    java - 通过从 Scala/Java 编写/执行 SQL 脚本来处理间歇性数据库连接

    python - 使用 Spark SQL 时获取 B 无法转换为 java.lang.String

    scala - 使用 Apache Spark 将 MongoDB 数据保存为 parquet 文件格式

    Hive,不支持将表文件格式从 orc 更改为 parquet?