内置 I/O 转换

Apache Parquet I/O 连接器

Beam SDK 包含内置转换,可以从 Apache Parquet 文件读取数据并向其中写入数据。

开始之前

要使用 ParquetIO,请将 Maven 工件依赖项添加到您的 pom.xml 文件中。

<dependency>
    <groupId>org.apache.beam</groupId>
    <artifactId>beam-sdks-java-io-parquet</artifactId>
    <version>2.60.0</version>
</dependency>

其他资源

ParquetIO 预装在 Apache Beam python sdk..2.60.0 中。

其他资源

在 2.4 之前的 Spark 中使用 ParquetIO

ParquetIO 依赖于 Apache Parquet 1.10.0 中引入的 API。**Spark 2.4.x 兼容,无需执行任何额外步骤**。较旧版本的 Spark 在执行期间将无法开箱即用,因为预装的 Parquet 库版本将优先使用。应应用以下解决方法。

**注意**:以下技术允许您使用 ParquetIO 正确执行管道。此 Beam 连接器使用或生成的 Parquet 文件应与集群上的其他工具保持互操作性。

正常包含 Parquet 工件,并确保它将正确版本的 Parquet 作为传递依赖项引入。

<dependency>
    <groupId>org.apache.beam</groupId>
    <artifactId>beam-sdks-java-io-parquet</artifactId>
    <version>${beam.version}</version>
</dependency>

重新定位以下包

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <configuration>
    <createDependencyReducedPom>false</createDependencyReducedPom>
    <filters>
      <filter>
        <artifact>*:*</artifact>
        <excludes>
          <exclude>META-INF/*.SF</exclude>
          <exclude>META-INF/*.DSA</exclude>
          <exclude>META-INF/*.RSA</exclude>
        </excludes>
      </filter>
    </filters>
  </configuration>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <shadedArtifactAttached>true</shadedArtifactAttached>
        <shadedClassifierName>shaded</shadedClassifierName>
        <relocations>
          <relocation>
            <pattern>org.apache.parquet</pattern>
            <shadedPattern>shaded.org.apache.parquet</shadedPattern>
          </relocation>
          <!-- Some packages are shaded already, and on the original spark classpath. Shade them more. -->
          <relocation>
            <pattern>shaded.parquet</pattern>
            <shadedPattern>reshaded.parquet</shadedPattern>
          </relocation>
          <relocation>
            <pattern>org.apache.avro</pattern>
            <shadedPattern>shaded.org.apache.avro</shadedPattern>
          </relocation>
        </relocations>
        <transformers>
          <transformer
            implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
        </transformers>
      </configuration>
    </execution>
  </executions>
</plugin>

此技术经测试可用于 Spark 2.2.3、Spark 2.3.3 和 Spark 2.4.3(尽管对于 Spark 2.4+ 它是可选的)。