gpt4 book ai didi

c# - 在 .Net 中使用 Spark 写入增量表

转载 作者:行者123 更新时间:2023-12-02 06:35:10 24 4
gpt4 key购买 nike

我是 Apache Spark 的新手,正在尝试使用 dotnet\spark 将一些行写入 Delta 表(当前在本地,最终写入 ADLSgen2)。包裹。我正在使用以下方法,similar to this question ,特别是 .Format("delta") 调用:

using Microsoft.Spark.Sql;
using Microsoft.Spark.Sql.Types;

public static async Task WriteToDelta()
{

SparkSession spark = SparkSession.Builder().AppName("DeltaTableWrite").GetOrCreate();
// Create a schema for the data
StructType schema = new StructType(new[]
{
new StructField("id", new IntegerType()),
new StructField("name", new StringType()),
new StructField("age", new IntegerType())
});

// Create a DataFrame with sample data
DataFrame df = spark.CreateDataFrame(new[]
{
new GenericRow(new object[]
{1, "John Smith", 40}),
new GenericRow(new object[]
{2, "Jane Doe", 20}),
new GenericRow(new object[]
{3, "Bob Smith", 30})
}, schema);

// Write the DataFrame as a Delta table to blob storage
df.Write()
.Format("delta")
.Option("mergeSchema", "true")
.Mode(SaveMode.Overwrite)
.Save(@"C:\source\path\to\table");
}

但是,当我运行此命令时,我收到无法找到数据源:delta。请在 http://spark.apache.org/third-party-projects.html 错误中查找包,我理解这意味着我必须安装 delta-sharing package 。但在他们的自述文件中,没有提到对 C#/.NET 的支持,而且我不确定如何安装/添加该包作为 Apache Spark 连接器的一部分。这是我使用 Maven 为 Java 安装的东西吗?有人可以强调如何实现这一目标吗?

最佳答案

您需要按照 documentation 中的说明添加 Delta Lake 库。 。您有两个选择:

  • 如果您使用 spark-submit 运行应用,则需要将以下内容添加到命令行:
--packages io.delta:delta-core_2.12:2.3.0 \
--conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" \
--conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog"
  • 指定相同的选项,但在设置 session 时:
SparkSession spark = SparkSession.Builder().AppName("DeltaTableWrite")
.Config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
.Config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
.Config("spark.jars.packages", "io.delta:delta-core_2.12:2.3.0")
.GetOrCreate();

附注确保 Delta Lake 版本与 Spark 版本匹配,如 doc .

关于c# - 在 .Net 中使用 Spark 写入增量表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76213349/

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