.NET for Apache® Spark™
免费、开源、跨平台的大数据分析框架
Windows、Linux 和 macOS 上均支持
Apache Spark™ 是一种通用分布式处理引擎,用于分析大型数据集,通常是 TB 或 PB 级数据。Apache Spark 可用于处理批量数据、实时流、机器学习和即席查询。
处理任务分散在节点集群,数据缓存在内存中,以减少计算时间。
Apache Spark 通常用于大容量数据准备管道,如数据仓库中常见的提取、转换、加载(ETL)进程。
可以使用 Apache Spark 实时处理大量数据流,例如监视传感器数据流或分析金融交易以检测欺诈。
Apache Spark 可以通过在同一个程序中分散式处理数据准备和模型训练,减少构建机器学习模型的成本和时间。
现代业务通常需要以探索性方式分析大量数据。Apache Spark 非常适合所需数据处理的临时性质。
Spark 的 .NET 绑定在 Spark 互操作层上编写,旨在为多种语言提供高性能绑定。
适用于Apache Spark的 .NET 符合 .NET 标准—,也就是 .NET API 的正式规范,在 .NET 实现中很常见。这意味着可以在编写 .NET 代码的任何位置使用 .NET for Apache Spark。
观看这一系列介绍 NET for Apache Spark 的视频,开启对于大数据分析的探索之旅! 了解有关 .NET for Apache Spark 的全部信息,以及它是如何将大数据领域带入 .NET 生态系统中的。
// Create a Spark session
var spark = SparkSession
.Builder()
.AppName("word_count_sample")
.GetOrCreate();
// Create a DataFrame
DataFrame dataFrame = spark.Read().Text("input.txt");
// Manipulate and view data
var words = dataFrame.Select(Split(dataFrame["value"], " ").Alias("words"));
words.Select(Explode(words["words"])
.Alias("word"))
.GroupBy("word")
.Count()
.Show();
// Create a Spark session
let spark =
SparkSession.Builder()
.AppName("word_count_sample")
.GetOrCreate()
// Create a DataFrame
let df = spark.Read().Text("input.txt")
let words = df.Select(Split(df.["value"], " ").Alias("words"))
words.Select(Explode(words.["words"]).Alias("word"))
.GroupBy("word")
.Count()
.NET for Apache Spark 为你提供了用于使用 C# 和 F# 中的 Apache Spark 的 API。使用 .NET API,可以访问 Apache Spark 的所有方面,包括 Spark SQL、结构化数据和 Spark 流式处理。
.NET for Apache Spark 入门TPC-H 基准中所有 22 条查询所花费的总执行时间(以秒为单位,数值越小越好)。源自 TPC-H 基准内部运行的数据,使用 Ubuntu 16.04 上的热执行。如需了解基准方法和详细结果,请参阅 .NET for Apache Spark 性能。
.NET for Apache Spark 专为高性能而设计,在 TPC-H 基准 测试中表现良好。
TPC-H 基准包括一套面向企业的临时查询和并发数据修改。已选择查询和填充数据库的数据,以具有广泛的行业范围的相关性。
public void Run(string[] args)
{
var spark = SparkSession.Builder().AppName("Sample").GetOrCreate();
// Register a user-defined function (UDF) that runs C# code
spark.Udf().Register<string, bool>("MyUDF", (text) => Sentiment(text));
var df = spark.Read().Csv("data.csv").CreateOrReplaceTempView("Tweets");
var sqlDf = spark.Sql("SELECT _c0, MyUDF(_c1) FROM Tweets");
}
public static bool Sentiment(string text)
{
// Use ML.NET model to predict positive or negative sentiment of text
var predictionEngine = GetPredictionEngine();
var result = predictionEngine.Predict(new Tweet {Text = text});
return result.Prediction;
}
type Tweet = { Text: string }
let getSentiment (tweet: Tweet) =
// Use ML.NET model to predict positive or negative sentiment of text
let predictionEngine = GetPredictionEngine()
let result = predictionEngine.Predict(tweet)
result.Prediction
let run (args: string[]) =
let spark = SparkSession.Builder().AppName("Sample").GetOrCreate()
// Register a user-defined function (UDF) that runs F# code
spark.Udf().Register<string, bool>("MyUDF", fun text -> getSentiment tweet)
let df = spark.Read().Csv("data.csv").CreateOrReplaceTempView("Tweets")
// Register a UDF for sql functions
let sqlDf = spark.Sql("SELECT _c0, MyUDF(_c1) FROM Tweets")
sqlDf.Show()
使用 .NET for Apache Spark,你能够重新使用作为 .NET 开发人员已拥有的所有知识、技能、代码和库。
数据处理代码还可以利用 .NET 开发者可用的大型库生态系统,例如 Newtonsoft.Json、ML.NET、MathNet.Numerics、NodaTime 等。
.NET for Apache Spark 可用于 Linux、macOS 和 Windows,就像 .NET 的其余工具一样。
默认情况下,.NET for Apache Spark 在 Azure HDInsight 中可用,并且可以安装在 Azure Databricks、Azure Kubernetes 服务、AWS Databricks、AWS EMR 等中。
.NET for Apache Spark 是 开源 .NET 平台的一部分,该平台是由 3700 多家公司参与的强大社区。
.NET 是免费的,其中包括 .NET for Apache Spark。不收取任何费用或许可费用,包括商业用途费用。
分步教程将帮助你在计算机上运行 .NET for Apache Spark。
Apache Spark、Spark 以及 Apache 为美国和其他国家/地区的 Apache 软件基金会的注册商标或商标。