草庐IT

python - 获取保存 Parquet 文件的默认 HDFS 路径

我运行了一个spark作业,最终保存了一个Parquet文件,并且该作业成功完成。但是我只指定了文件名,并没有指定HDFS的路径。有没有办法打印出spark写入文件的默认HDFS路径?我查看了sc._conf.getAll(),但那里似乎没有任何有用的东西。 最佳答案 AFAIK这是其中一种方式(除了简单的命令方式是hadoopfs-ls-R|grep-iyourfile)...下面是示例scala代码片段....(如果你想在python或java中执行它,你可以模拟相同的api调用)获取Parquet文件列表。并像下面那样过滤它们

hadoop - Spark(2.3) 无法识别通过 Hive Alter Table 命令添加的 Parquet 表中的新列

我有一个使用Spark2.3APIdf.saveAstable创建的HiveParquet表。有一个单独的Hive进程可以更改同一个Parquet表以添加列(根据要求)。但是,下次当我尝试将同一个parquet表读入Spark数据帧时,使用HiveAlterTable命令添加到parquet表的新列不会显示在df.printSchema输出中。根据初步分析,似乎可能存在一些冲突,Spark使用自己的模式而不是读取Hive元存储。因此,我尝试了以下选项:更改Spark设置:spark.sql.hive.convertMetastoreParquet=false并刷新spark目录:spa

apache - 使用反射将 pojo 写入 parquet 文件

HI正在寻找API来使用我拥有的Pojos编写parquest。我能够使用反射生成avro模式,然后使用AvroSchemaConverter创建Parquet模式。此外,我无法找到将Pojos转换为GenericRecords(avro)的方法,否则我本可以使用AvroParquetWriter将Pojos写入Parquet文件。有什么建议吗? 最佳答案 如果你想通过avro,你有两个选择:1)让avro生成您的pojo(参见教程here)。生成的pojo扩展了SpecificRecord,然后可以将其与AvroParquetWr

hadoop - 使用架构文件创建一个 Parquet 支持的 Hive 表

Clouderadocumentation,展示了一种简单的方法来“使用Avro模式文件创建Avro支持的Hive表。”这很好用。我想对Parquet支持的Hive表做同样的事情,但是相关的documentation在这种情况下,列出了每个列类型,而不是从模式中读取。是否有可能以与Avro数据相同的方式从模式中读取Parquet列? 最佳答案 目前,答案似乎是否。Hive有一个Unresolved问题。https://issues.apache.org/jira/browse/PARQUET-76这个问题最近很活跃,所以希望Hive

hadoop - 如何将 HBase 表以 Parquet 格式移动到 HDFS?

我必须构建一个工具,以parquet格式处理从HBase(HFiles)到HDFS的数据存储。请建议将数据从HBase表移动到Parquet表的最佳方法之一。我们必须将4亿条记录从HBase迁移到Parquet。如何实现这一目标以及移动数据的最快方式是什么?提前致谢。问候,帕迪普夏尔马。 最佳答案 请查看此项目tmalaska/HBase-ToHDFS它读取HBase表并将其写为Text、Seq、Avro或ParquetParquet的用法示例:ExportsthedatatoParquethadoopjarHBaseToHDFS.

java - 如何在 Java 中为 Hadoop 作业的 ParquetOutputFormat 定义 Parquet 模式?

我在java中有一个Hadoop作业,它具有序列输出格式:job.setOutputFormatClass(SequenceFileOutputFormat.class);我想改用Parquet格式。我试图以天真的方式设置它:job.setOutputFormatClass(ParquetOutputFormat.class);ParquetOutputFormat.setOutputPath(job,output);ParquetOutputFormat.setCompression(job,CompressionCodecName.GZIP);ParquetOutputFormat

hadoop - 具有 gzip 格式的大文本文件的 Spark 作业

我正在运行一个Spark作业,它花费了很长时间来处理输入文件。输入文件为6.8GBGzip格式,包含1.1亿行文本。我知道它是Gzip格式,所以它不可拆分,并且只有一个执行程序将用于读取该文件。作为调试过程的一部分,我决定只看看将gzip文件转换为parquet需要多长时间。我的想法是,一旦我转换为parquet文件,然后如果我在该文件上运行我的原始Spark作业,在这种情况下它将使用多个执行程序并且输入文件将被并行处理。但即使是小工作也比我预期的要花更长的时间。这是我的代码:valinput=sqlContext.read.text("input.gz")input.write.pa

hadoop - 如何在 aws us-east-2 上将 s3a 与 spark 2.1.0 一起使用?

背景我一直在努力为自己获取一个灵活的设置,以便在aws上使用spark和dockerswarm模式。我一直在使用的docker镜像配置为使用最新的spark,当时是2.1.0和Hadoop2.7.3,可在jupyter/pyspark-notebook获得。.这是有效的,我一直在测试我计划使用的各种连接路径。我遇到的问题是与s3交互的正确方式的不确定性。我一直在跟踪如何使用s3a为spark提供依赖项以连接到awss3上的数据。协议(protocol),对比s3n协议(protocol)。我终于找到了hadoopawsguide并认为我正在关注如何提供配置。但是,我仍然收到400Bad

hadoop - Parquet-MR AvroParquetWriter - 如何将数据转换为 Parquet(使用特定映射)

我正在开发一种工具,用于将数据从本地格式转换为Parquet和JSON(用于Spark、Drill和MongoDB的不同设置),使用带有特定映射的Avro作为垫脚石。我必须支持定期在客户端机器上转换新数据,这就是为什么我尝试使用(Avro|Parquet|JSON)开关编写自己的独立转换工具,而不是使用Drill或Spark或其他工具作为转换器如果这是一次性工作,我可能会这样做。我将整个事情都基于Avro,因为这似乎是在一个引擎盖下转换为Parquet和JSON的最简单方法。我使用特定映射从静态类型检查中获益,编写了一个IDL,将其转换为schema.avsc,生成类并使用特定构造函数

java - 使用 Java API 将 Parquet 格式写入 HDFS,而不使用 Avro 和 MR

通过直接创建Pojo的ParquetSchema将ParquetFormat写入HDFS(使用JavaAPI)的简单方法是什么,无需使用avro和MR?我发现的示例已过时并且使用了已弃用的方法也使用了Avro、spark或MR之一。 最佳答案 实际上,没有很多示例可用于在没有外部框架帮助的情况下读取/写入Apacheparquet文件。核心parquet库是parquet-column,您可以在其中找到一些直接读取/写入的测试文件:https://github.com/apache/parquet-mr/blob/master/pa