gpt4 book ai didi

java - 将 lzo 文件作为数据集导入 java Spark

转载 作者:行者123 更新时间:2023-11-30 06:34:55 25 4
gpt4 key购买 nike

我有一些使用 lzo 压缩的 tsv 格式的数据。现在,我想在 java Spark 程序中使用这些数据。

目前,我可以解压这些文件,然后使用

将它们作为文本文件导入到 Java 中
    SparkSession spark = SparkSession.builder()
.master("local[2]")
.appName("MyName")
.getOrCreate();

Dataset<Row> input = spark.read()
.option("sep", "\t")
.csv(args[0]);

input.show(5); // visually check if data were imported correctly

我在第一个参数中传递了解压缩文件的路径。如果我将 lzo 文件作为参数传递,则显示的结果是难以辨认的垃圾。

有办法让它发挥作用吗?我使用 IntelliJ 作为 IDE,并在 Maven 中设置项目。

最佳答案

我找到了解决方案。它由两部分组成:安装hadoop-lzo包并配置它;执行此操作后,代码将与问题中的代码保持相同,前提是可以将 lzo 文件导入到单个分区中。

下面我将解释如何在 IntelliJ 中设置 Maven 项目。

  • 安装hadoop-lzo 包:您需要修改maven 项目文件夹中的pom.xml 文件。它应包含以下摘录:

    <repositories>
    <repository>
    <id>twitter-twttr</id>
    <url>http://maven.twttr.com</url>
    </repository>
    </repositories>

    <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>

    <dependency>
    <!-- Apache Spark main library -->
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.1.0</version>
    </dependency>

    <dependency>
    <!-- Packages for datasets and dataframes -->
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.1.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.hadoop.gplcompression/hadoop-lzo -->
    <dependency>
    <groupId>com.hadoop.gplcompression</groupId>
    <artifactId>hadoop-lzo</artifactId>
    <version>0.4.20</version>
    </dependency>

    </dependencies>

这将激活包含包 hadoop-lzo 的 maven Twitter 存储库并使 hadoop-lzo 可用于该项目。

  • 第二步是创建一个 core-site.xml 文件来告诉 hadoop 您已经安装了新的编解码器。它应该放置在程序文件夹中的某个位置。我将其放在 src/main/resources/core-site.xml 下,并将该文件夹标记为资源(在 IntelliJ 项目面板中右键单击该文件夹 -> 将目录标记为 -> 资源根目录) 。 core-site.xml 文件应包含:

    <configuration>
    <property>
    <name>io.compression.codecs</name>
    <value>org.apache.hadoop.io.compress.DefaultCodec,
    com.hadoop.compression.lzo.LzoCodec,
    com.hadoop.compression.lzo.LzopCodec,
    org.apache.hadoop.io.compress.GzipCodec,
    org.apache.hadoop.io.compress.BZip2Codec</value>
    </property>
    <property>
    <name>io.compression.codec.lzo.class</name>
    <value>com.hadoop.compression.lzo.LzoCodec</value>
    </property>
    </configuration>

就是这样!再次运行您的程序,它应该可以工作!

关于java - 将 lzo 文件作为数据集导入 java Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45376241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com