如何使用Apache spark java api读取csv文件并将其保存到多个表中



我需要读取具有多列的csv文件,并使用Apache spark java api将其保存到多个表。如果有人可以,请帮忙。

在本例中,我从CSV读取数据,并将一些数据保存在Parquet中,另一些数据保存在CSV中。这两个数据框架有点不同。如果需要,您可以轻松地修改以保存到关系数据库。

下面是一个在Spark中加载CSV文件的快速方法:

SparkSession spark = SparkSession.builder()
.appName("CSV to Dataset")
.master("local")
.getOrCreate();
// Reads a CSV file with header, called books.csv, stores it in a
// dataframe
Dataset<Row> df = spark.read().format("csv")
.option("header", "true")
.load("data/books.csv");

然后保存它,你可以这样做:

df
.write()
.format("parquet")
.mode(SaveMode.Overwrite)
.save("/tmp/fires_parquet");
Dataset<Row> outputDf = df
.filter("confidence_level = 'high'")
.repartition(1);
outputDf
.write()
.format("csv")
.option("header", true)
.mode(SaveMode.Overwrite)
.save("/tmp/high_confidence_fires_csv");

我从https://github.com/jgperrin/net.jgp.books.spark.ch01/blob/master/src/main/java/net/jgp/books/spark/ch01/lab100_csv_to_dataframe/CsvToDataframeApp.java(读)和https://github.com/jgperrin/net.jgp.books.spark.ch17/blob/master/src/main/java/net/jgp/books/spark/ch17/lab100_export/ExportWildfiresApp.java(写)的两个例子中改编了代码。

最新更新