草庐IT

java - 将 spark 数据帧写入 Parquet 格式时出现内存不足错误

我正在尝试从数据库中查询数据,对其进行一些转换并将新数据以Parquet格式保存在hdfs上。由于数据库查询返回大量行,我正在分批获取数据并对每个传入批处理运行上述过程。更新2:批处理逻辑是:importscala.collection.JavaConverters._importorg.apache.spark.SparkContextimportorg.apache.spark.sql.SQLContextimportorg.apache.spark.sql.Rowimportorg.apache.spark.sql.types.{StructType,StructField,St

java - 如何在 Parquet 文件中创建嵌套对象和数组?

如何创建带有嵌套字段的parquet文件?我有以下内容:publicstaticvoidmain(String[]args)throwsIOException{intfileNum=10;//numoffilesconstructedintfileRecordNum=50;//recordnumofeachfileintrowKey=0;for(inti=0;imetas=newHashMap();metas.put(HConstants.START_KEY,genRowKey("%10d",rowKey+1));metas.put(HConstants.END_KEY,genRowK

java - Athena 从 parquet 模式创建表

有没有办法根据avro模式直接从parquet文件在AmazonAthena中创建表?模式被编码到文件中,所以我需要自己实际创建DDL看起来很愚蠢。我看到了this还有另一个duplication但它们与Hive直接相关,它不适用于Athena。理想情况下,我正在寻找一种无需在控制台上定义即可以编程方式执行此操作的方法。 最佳答案 现在使用AWSGlue或多或少是可能的.Glue可以抓取一堆不同的数据源,包括ParquetfilesonS3.发现的表被添加到Glue数据目录并可从Athena查询。根据您的需要,您可以安排Glue爬虫

java - 更改 DataFrame.write() 的输出文件名前缀

通过SparkSQLDataFrame.write()方法生成的输出文件以“part”基名前缀开头。例如DataFramesample_07=hiveContext.table("sample_07");sample_07.write().parquet("sample_07_parquet");结果:hdfsdfs-lssample_07_parquet/Found4items-rw-r--r--1robrob02016-03-1916:40sample_07_parquet/_SUCCESS-rw-r--r--1robrob4912016-03-1916:40sample_07_p

java - 在 AWS Lambda 函数上创建 Parquet 文件

我在S3上收到一组(1Mb)CSV/JSON文件,我想将其转换为Parquet。我期望能够使用Lambda函数轻松地将这些文件转换为Parquet。在查看Google后,我没有找到没有某种Hadoop的解决方案。因为这是一个文件转换,我不敢相信没有一个简单的解决方案。有人有一些Java/Scala示例代码来进行这种转换吗? 最佳答案 如果您的输入JSON文件不大(pyarrow,尽管路线有点复杂。它涉及使用Pandas:df=pd.read_json(file.json)然后将其转换为parquet文件:pq=pa.parquet.

java - 在java中创建 Parquet 文件

有没有办法从java创建parquet文件?我在内存中有数据(java类),我想将它写入一个parquet文件,稍后从apache-drill读取它。有没有一种简单的方法可以做到这一点,比如将数据插入到sql表中?明白了感谢您的帮助。结合答案和这个link,我能够创建一个parquet文件并用drill读回它。 最佳答案 ParquetWriter的构造函数已弃用(1.8.1)但ParquetWriter本身未弃用,您仍然可以通过在其中扩展抽象Builder子类来创建ParquetWriter。这是Parquet创造者自己的例子Ex

Spark中写parquet文件是怎么实现的

背景本文基于Spark3.5.0写本篇文章的目的是在于能够配合spark.sql.maxConcurrentOutputFileWriters参数来加速写parquet文件的速度,为此研究一下Spark写parquet的时候会占用内存的大小,便于配置spark.sql.maxConcurrentOutputFileWriters的值,从而保证任务的稳定性结论一个sparkparquetwriter可能会占用128MB的内存(也就是parquet.block.size的大小)。所有在调整spark.sql.maxConcurrentOutputFileWriters的时候得注意不能调整过大,否则

java - 从 java 对象到 parquet 文件

我有一个json文件,想将其转换为parquet文件。我知道如何从json文件转换为java对象,但仍然需要从java对象转换为parquet文件。我不想使用AVRO/ProtocolBuffers/Thrift/等进行转换,也不想使用Apachedrill-只是一个java代码。我在Maven中使用Java项目,我的pom.xml如下所示:org.apache.parquetparquet-common1.8.1org.apache.parquetparquet-encoding1.8.1org.apache.parquetparquet-column1.8.1org.apache.

json - 将数据集写入 Hive 时出现异常

我正在尝试使用SparkJava将DataSet写入Hive数据库,但在此过程中出现异常。这是我的代码:Datasetdata=spark.read().json(rdd).select("event.event_name");data.write().mode("overwrite").saveAsTable("telecom.t2");这里,rdd是流式传输的json数据,我可以通过以下命令打印结果data。data.show();但是当我尝试将此结果写入Hive数据库时,我没有收到任何异常,但当我尝试打印这些值时,我在Hive命令行中收到异常。例如:select*fromtele

hadoop - 如何在 Hive 中使用使用 Apache Drill 创建的 Parquet 文件

ApacheDrill有一个很好的功能,可以从许多传入的数据集中制作parquet文件,但似乎没有很多关于以后如何使用这些parquet文件的信息——特别是在Hive中。Hive有没有办法利用那些“1_0_0.parquet”等文件?也许创建一个表并从parquet文件加载数据,或者创建一个表并以某种方式将这些parquet文件放入hdfs以便Hive读取它? 最佳答案 我遇到过这个问题,如果您使用的是Cloudera发行版,则可以使用impala创建表(Impala和Hive共享metastore),它允许从parquet文件创建