问题标签 [parquet-mr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
615 浏览

parquet - 如何在模式中使用 Parquet UUID 逻辑类型

最近,parquet-format项目添加了一个 UUID 逻辑类型。具体来说,这是在镶木地板格式的修订版 2.4中添加的。我有兴趣在 Java 中使用parquet-mr库来创建一些 parquet 文件,但我似乎无法弄清楚如何在 parquet 模式中使用 UUID 逻辑类型。像这样的简单模式似乎并不像我希望的那样工作:

我在这个模式上尝试了很多变体,到目前为止还没有设法让它用MessageTypeParser.parseMessageType方法解析。这是 parquet-mr 库的错误还是限制?还是我只是错误地格式化了我的架构?谢谢!

0 投票
1 回答
532 浏览

google-bigquery - 扫描 parquet 联合表时出现 INT32 类型错误。错误或预期行为?

我正在使用 BigQuery 查询外部数据源(也称为联合表),其中源数据是存储在 google 云存储中的 hive 分区 parquet 表。我使用本指南来定义表格。

我测试此表的第一个查询如下所示

此查询失败并出现以下错误

列 visitor_partition 的类型为 INT64,与预期的 INT32 类型不同

我想知道为什么会发生此错误以及如何解决或解决它。我使用该parquet-tools库进行了一些调查,以窥探我的镶木地板数据的内部结构。

当我运行java -jar ./parquet-tools-1.10.0.jar meta test.c000.gz.parquet | grep visitor_partition我的一个镶木地板文件时,将返回以下相关行

当我运行架构命令时,会出现以下相关架构信息optional int64 visitor_partition;

所以很明显,在这个 parquet 文件中,该visitor_partition字段的数据表示为 INT64。那么为什么 BigQuery 期望在这里看到 INT32 类型呢?

0 投票
0 回答
417 浏览

apache-spark - 重复数据的 Parquet 存储大小更高

我有一个数据集,其中包含近 20 亿行镶木地板格式,包含 200 个文件。它在 S3 上占用 17.4GB。该数据集有接近 45% 的重复行。我使用 Spark 中的“distinct”函数对数据集进行了重复数据删除,并将其写入 S3 上的不同位置。

我预计数据存储将减少一半。相反,去重数据占用了 34.4 GB(重复数据的两倍)。

我检查了这两个数据集的元数据。我发现重复数据和去重数据的列编码存在差异。

列编码的差异

我想了解如何获得减少存储大小的预期行为。

话虽如此,我还有几个问题:

  1. 我还想了解这种异常是否会以任何方式影响性能。在我的过程中,我必须在这些列上应用大量过滤器并distinct在保留过滤数据的同时使用函数。
  2. 我在网上的一些镶木地板博客中看到,一列的编码只是一个。在这种情况下,我看到不止一个列编码。这是正常的吗?
0 投票
1 回答
109 浏览

java - Hadoop S3A 文件系统,中止对象上传?

我有类似的代码

如果validate抛出异常,我想释放与作者关联的所有资源。但在这种情况下,我不想在 S3 中创建任何对象。这是可以实现的吗?

如果我关闭编写器,它将结束 s3 分段上传并在云中创建一个对象。如果我不关闭它,到目前为止写入的部分将保留在磁盘缓冲区中,从而阻塞工作。

0 投票
1 回答
109 浏览

maven - 由于 relativePath,在镶木地板工具上构建失败

我想在 Docker 中获得 parquet-tools。它需要建造。但失败并显示以下错误消息。

我试试这个,但没有奏效。互联网连接很好。并尝试另一台计算机,重现它。

这个问题可能是pom的relativePath。Maven 无法读取父 POM 并引发错误。

这是重现错误环境的 Dockerfile。

谁能帮我?

0 投票
1 回答
138 浏览

cloudera - 我需要哪个“JAR”文件才能在 Scala 中导入“org.apache.parquet”?

当我尝试这个时:

它出错了:

问题- 我需要在 spark conf 中包含哪个 jar 才能使此导入生效?

请注意,这很好用:

我可以访问的 CDH 罐子:

0 投票
0 回答
84 浏览

java - ParquetFileReader 导致太多 TCP 连接处于 CLOSE_WAIT 状态

我正在尝试从镶木地板文件中读取元数据信息:

此行在CLOSE_WAIT-state 中打开一个连接(使用lsof -p pid命令检查)。

在超过 65,536 个文件上,它返回“打开的文件太多”-错误(因此需要重新启动我的应用程序)。我尝试替换为:

但仍然面临一个问题。我已经尝试过版本为 1.8.1、1.10.1、1.11.1 的 parquet-hadoop jar,但每个版本都面临问题。

0 投票
0 回答
118 浏览

python - parquet-tools 无法读取 zstd 文件但可以读取 gzip?

我安装了最新版本的parquet-toolsfromapache-mr和 version parquet-tools-1.8.2.jar

这是一个可重现的示例:

aws s3 cp得到了 parquet 文件并试图parquet-tools head在它上面运行,但是得到了:

但是,对 gzip 压缩文件执行相同的命令会给我:

这是 zstd 压缩或 parquet-tools 的错误吗?还是我没有在某处阅读细则?

注意:我parquet-tools的别名为java -jar .../parquet-tools-1.8.2.jar

0 投票
0 回答
89 浏览

pyspark - Hive 插入创建与 Spark 插入不同的镶木地板

我正在使用 hdp 2.6.5.0-292。

在这种环境中,数据正在使用 Hive 和 pyspark 进行处理。

使用 SQL 插入,例如:

正在创建镶木地板 1.8.1,而 pyspark 数据框插入:

正在提供 1.6.0。

我们如何才能同时制作 1.8.1?

请帮助解决此问题。

这是我的节目创建表的样子:

创建外部表 abc.xyz( ...) 分区(运行日期字符串)行格式 SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 存储为输入格式 'org.apache.hadoop.hive .ql.io.parquet.MapredParquetInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' LOCATION 'hdfs://...' TBLPROPERTIES ('spark.sql.create.version'=' 2.2 或之前版本'、'spark.sql.sources.schema.numPartCols'='1'、'spark.sql.sources.schema.numParts'='1'、'spark.sql.sources.schema.part.0' ='{...}', 'spark.sql.sources.schema.partCol.0'='run_date', 'transient_lastDdlTime'='1608546154')

0 投票
0 回答
139 浏览

java - 从 Java 中的字节数组(例如 parquet 文件的内容,例如 example.parquet)中提取 Parquet 模式?

我有一个字节数组,它是镶木地板文件的内容。

如何提取镶木地板文件的架构,但 1)不写入新文件然后再次读取它,2)不使用 Spark?

输入(csv格式的输入parquet文件的示例内容):

预期输出(我想得到类似下面的东西):