问题标签 [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.
parquet - 为什么`plain_dictionary`编码的字典页面偏移量为0?
Parquet 由 Spark v2.4 Parquet-mr v1.10 生成
使用parquet-tools
v1.12 进行检查
问题:
FPO(第一数据页偏移)应该总是大于还是小于 DO(字典页偏移)?我从某处读到字典页面存储在数据页面之后。
对于列x
& y
,plain_dictionary
用于编码。但是,为什么两列的字典偏移量都为 0?
如果我使用使用 parquet-cpp v1.5.1 的 pyarrow v0.11.1 检查,它会告诉我has_dictionary_page: False
&dictionary_page_offset: None
它是否有字典页面?
java - 将 Parquet 转换为 avro 会引发 java.lang.IllegalArgumentException: INT96 not yet implemented 错误
我正在尝试将镶木地板文件转换为 avro 但抛出“INT96 尚未实现”
您能否为此提出任何解决方案
线程“main”java.lang.IllegalArgumentException 中的异常:尚未实现 INT96。在 org.apache.parquet.avro.AvroSchemaConverter$1.convertINT96(AvroSchemaConverter.java:279) 在 org.apache.parquet.avro.AvroSchemaConverter$1.convertINT96(AvroSchemaConverter.java:264) 在 org.apache.parquet.schema.PrimitiveType $PrimitiveTypeName$7.convert(PrimitiveType.java:297) at org.apache.parquet.avro.AvroSchemaConverter.convertField(AvroSchemaConverter.java:263) at org.apache.parquet.avro.AvroSchemaConverter.convertFields(AvroSchemaConverter.java:241)在 org.apache.parquet.avro.AvroSchemaConverter.convert(AvroSchemaConverter.java:231)
scala - 使用 Akka parquet 读取 fastparquet 文件
我有一个使用 Pandas 和 fastparquet 生成 Parquet 文件的 Python 系统。这些将由在 Akka 流上运行的 Scala 系统读取。
Akka 确实提供了用于读取 Avro Parquet 文件的源。但是,当我尝试读取文件时,我最终得到
这是 Scala 应用程序工作不需要阅读的列之一。我的问题是,考虑到生成的文件来自 fastparquet,我是否可以指定一个模式并只获取那一列。
生成用于读取 Parquet 文件的源的相关片段是:
parquet - 使用 PageIndex,为什么 parquet 不会跳过不必要的页面?
使用parquet-mr@1.11.0
,我有一个架构,例如:
- 我正在进行单行查找
url
以检索相关的content
- 行按 排序
url
。
该文件是使用以下内容创建的:
- parquet.block.size:256 MB
- parquet.page.size:10 MB
使用parquet-tools
我能够验证我确实有我的列索引和/或我的列的偏移量:
使用配置为:
多亏了column-index
,column-offsets
我希望读者只能阅读 2 页:
- 包含使用列索引
url
匹配的那个。min/max
- 然后,包含
content
使用偏移索引的匹配行索引的那个。
但是我看到的是读者正在阅读和解码该content
列的数百页(~250MB),我是否错过了 PageIndex 在 parquet-mr 中应该如何工作的一些内容?
查看“加载页面”和“跳过记录”日志行,这是试图在应用过滤器之前构建整个记录url
,在我看来,这会破坏 PageIndex 的目的。
我试图在网上查看并深入了解阅读器的工作原理,但我找不到任何东西。
编辑
我发现一个 2015 年的公开 PRparquet-column
暗示当前读者(至少在当时)确实在应用谓词之前使用所有必需的列构建整个记录:
https://github.com/apache/parquet-mr/pull/288
但在这种情况下,我看不到column offsets
.
visual-studio - 将 parquet-tools 添加到路径 (Visual Studio Code)
我正在尝试使用这个parquet-viewer,以便可以在 Visual Studio Code 中轻松查看 parquet 文件。
它要求路径中提供parquet-tools 。
我做了
当我尝试使用 Visual Studio Code 打开我的 .parquet 文件时,我看到的是二进制文件,而不是查看文件的内容。
在使用自制软件安装 parquet-tools 之前,Visual Studio Code 警告说 parquet-tools 不包含在路径中。安装 parquet-tools 后,我不再看到此警告,但我怀疑路径是问题所在。
无论如何,我对环境变量和添加路径的了解相当有限,我所能做的就是编辑我的 .bash_profile。我不确定当 Visual Code 要求我将 parquet-tools 添加到它的路径时我需要做什么,我猜它有一个 CLI 工具需要以某种方式在它自己的路径中搜索已安装的二进制文件?有没有办法可以编辑它?或者它只是想让我将 parquet-tools 添加到我的 .bash_profile 中?
java - 在java中将Arrow转换为Parquet,反之亦然
我一直在寻找在 Java 中转换arrow
为parquet
反之亦然的方法。
尽管 Python 库arrow
完全支持上述转换,但我在 Java 中几乎找不到任何相同的文档。
arrow/parquet
有没有人在Java 库中遇到过这样的功能?
java - 我如何使用java中的客户端服务器套接字编程通过网络流式传输镶木地板文件
我正在使用ParquetReader<Group> reader = new ParquetReader<Group>(path, groupReadSupport);
从本地读取镶木地板文件。
我想知道如何通过网络逐行传输镶木地板文件
我想知道如何通过客户端套接字逐行传递该行数据,但我不想传递字符串格式我想在服务器套接字中以镶木地板格式传递,我想从服务器套接字中处理它并打印它字符串格式
parquet - 是否可以将多个 oracle 数据库表写入一个 parquet 文件?
我有一个要求,我想将我的 oracle DB 数据转换为镶木地板。所以在我的数据库中,我有多个表,例如员工、部门。那么是否可以在单个镶木地板文件中插入两个表的数据?还是我需要为每个表创建单独的镶木地板文件?
java - Spark 无法访问使用 AvroParquetWriter 编写的 Parquet 文件
我正在本地编写镶木地板文件,并使用客户端将其上传到AvroParquetWriter
s3 AmazonS3
。然后尝试从 Spark 访问它。以下是我的代码:
AvroParquetWriter:
上传到 s3:
从 Spark 中读取:
从 Spark 读取镶木地板文件时,出现以下异常:
调用 o379.parquet 时出错。:org.apache.spark.SparkException:作业因阶段失败而中止:阶段 3.0 中的任务 0 失败 4 次,最近一次失败:阶段 3.0 中丢失任务 0.3(TID 15,ip-10-110-10-115.ec2 .internal, executor 7): org.apache.spark.SparkException: 在 awaitResult 中抛出异常: at org.apache.spark.util.ThreadUtils$.awaitResult(ThreadUtils.scala:226) at org.apache.spark.util.ThreadUtils $.parmap(ThreadUtils.scala:290) at org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat$.readParquetFootersInParallel(ParquetFileFormat.scala:538) at org.apache.spark.sql.execution.datasources.parquet .ParquetFileFormat$$anonfun$9.apply(ParquetFileFormat.scala:611) at org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat$$anonfun$9.apply(ParquetFileFormat.scala:原因:java.io.IOException:无法读取文件的页脚:FileStatus{path=s3://bucketname/path/file.parquet; 是目录=假;长度=3920;复制=0;块大小=0;修改时间=0;访问时间=0;所有者=; 组=; 权限=rw-rw-rw-; isSymlink=false} 在 org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat$$anonfun$readParquetFootersInParallel$1.apply(ParquetFileFormat.scala:551) at org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat$$anonfun$ readParquetFootersInParallel$1.apply(ParquetFileFormat.scala:538) at org.apache.spark.util.ThreadUtils$$anonfun$3$$anonfun$apply$1.apply(ThreadUtils.scala:287) at scala.concurrent.impl.Future$PromiseCompletingRunnable .liftedTree1$1(Future.scala:24) at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121) at scala .concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 在 scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:第1339章 scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) 引起:java.lang.RuntimeException: s3://bucketname/path/file.parquet 不是 Parquet 文件。尾部的预期幻数 [80, 65, 82, 49] 但 在 org.apache.parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:524) 的 org.apache 中找到 [120, 57, -43, 112]。 parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:505) at org.apache.parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:499) at org.apache.parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java: 476) 在 org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat$$anonfun$readParquetFootersInParallel$1.apply(ParquetFileFormat.scala:544) ... 还有 9 个
请帮我解决这个问题。
谢谢
apache-spark - 各种 Hive 表的 parquet-mr 版本会有所不同
我们已经创建了 Shell 脚本,并且从 Shell 脚本中我们使用 Spark 提交命令来调用 HQL 文件。但是对于多个 hive 表,parquet-mr 版本会有所不同(1.6.0、1.8.1、1.8.2)。
请找到我们的堆栈详细信息
- 电子病历版本:5.8
- 火花:2.2
- 蜂巢:2.3.0
谁能帮助我了解这些 Parquet MR 版本对于不同的桌子是如何变得不同的?