Mobius: C# API for Spark alternatives and similar packages
Based on the "API" category.
Alternatively, view Mobius: C# API for Spark alternatives based on common mentions on social networks and blogs.
-
NancyFx
Lightweight, low-ceremony, framework for building HTTP based services on .Net and Mono. Note: This project is no longer maintained and has been archived. -
ServiceStack
Thoughtfully architected, obscenely fast, thoroughly enjoyable web services for all -
Hot Chocolate
Welcome to the home of the Hot Chocolate GraphQL server for .NET, the Strawberry Shake GraphQL client for .NET and Banana Cake Pop the awesome Monaco based GraphQL IDE. -
WexFlow
An easy and fast way to build automation and workflows on Windows, Linux, macOS, and the cloud. -
Xamarin.Essentials
Essential cross platform APIs for your mobile apps. -
FFImageLoading - Fast & Furious Image Loading
Image loading, caching & transforming library for Xamarin and Windows -
WebAPI Contrib
Community Contributions for ASP.NET Web API -
JsonApiDotNetCore
A framework for building JSON:API compliant REST APIs using ASP.NET and Entity Framework Core. -
SapphireDb
SapphireDb Server, a self-hosted, easy to use realtime database for Asp.Net Core and EF Core -
🎨 Awesome .Net Core Education
A curated list of awesome articles and resources for learning and practicing .Net Core and its related technologies. -
Lib.AspNetCore.ServerSentEvents
Lib.AspNetCore.ServerSentEvents is a library which provides Server-Sent Events (SSE) support for ASP.NET Core -
RedditSharp
C# Implementation of the Reddit API. This is an ("unofficial") Fork of SirCmpwn/RedditSharp with Nuget package/support. -
EISK Web API
Project based on latest .NET (v6.0) technologies for building scalable web api, along with clean architecture patterns. -
Nelibur
Message based webservice framework on the pure WCF -
Breeze
Breeze for C#, F#, and VB.NET client applications -
Lib.Web.Mvc
Lib.Web.Mvc is a library which contains some helper classes for ASP.NET MVC such as strongly typed jqGrid helper, attribute and helper providing support for HTTP/2 Server Push with Cache Digest, attribute and helpers providing support for Content Security Policy Level 2, FileResult providing support for Range Requests, action result and helper providing support for XSL transformation and more. -
CommandQuery
Command Query Separation for 🌐ASP.NET Core ⚡AWS Lambda ⚡Azure Functions ⚡Google Cloud Functions -
cryptocompare-api
An async-based CryptoCompare API client library for .NET and .NET Core -
Juka
🥣 Juka Programming Language - Fast Portable Programming Language. Run code anywhere without complicated installations and admin rights. Simple, yet powerful new programming language [Easy to code and run on any system] IOT devices supported! -
Crowdin .NET client
.NET client library for Crowdin API -
Genius.NET
.NET library to access Genius API @ (https://www.genius.com) -
ابزار Persian Tools
Persian Tools for .Net and .Net Core -
RequestManager
Managing HTTP requests in ASP.NET Core -
Google Search Results in .NET
Google Search Results via SERP API DotNet Package -
Automatic Migration support for EF Core
EF Core Automatic Migration -
Gamepad-Controller-Test
Gamepads are often used as replacements for Mouse / Keyboard. While it is not possible to use them with every game, there are several games available that support gamepad controls, especially console ports of PC titles or even games designed for gamepad controls in the first place. To ensure maximum compatibility, Windows uses a default gamepad driver which supports a wide variety of gamepads. The most notable exception is the Xbox controllers, which still use XBCD for their enhanced features (e.g., force feedback). Therefore I have decided to make an easy test for gamers to test their gamepad controller devices on the go online without wasting any time trying to install third-party softwares which are usually out of order on their PCs to get the job done. This project is inspired by the work of @greggman and tweaks his work a little bit for a better user experience, all credit goes to him for this amazing work and for making my job easy. -
DuckSharp
An unofficial asynchronous .NET DuckDuckGo Instant Answer Web API wrapper -
Developer Exception Json Response Middleware
Http Middleware Extensions for ASP.NET Core application -
Boycotter
Simple library for removing unnecessary properties from objects. -
X.Web.Sitemap
Simple sitemap generator for .NET and .NET Core -
ASP.NET Web API
Framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices -
ASP.NET WebAPI
Framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices
Static code analysis for 29 languages.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Mobius: C# API for Spark or a related project?
README
Mobius development is deprecated and has been superseded by a more recent version '.NET for Apache Spark' from Microsoft (Website | GitHub) that runs on Azure HDInsight Spark, Amazon EMR Spark, Azure & AWS Databricks.
Mobius: C# API for Spark
Mobius provides C# language binding to Apache Spark enabling the implementation of Spark driver program and data processing operations in the languages supported in the .NET framework like C# or F#.
For example, the word count sample in Apache Spark can be implemented in C# as follows :
var lines = sparkContext.TextFile(@"hdfs://path/to/input.txt");
var words = lines.FlatMap(s => s.Split(' '));
var wordCounts = words.Map(w => new Tuple<string, int>(w.Trim(), 1))
.ReduceByKey((x, y) => x + y);
var wordCountCollection = wordCounts.Collect();
wordCounts.SaveAsTextFile(@"hdfs://path/to/wordcount.txt");
A simple DataFrame application using TempTable may look like the following:
var reqDataFrame = sqlContext.TextFile(@"hdfs://path/to/requests.csv");
var metricDataFrame = sqlContext.TextFile(@"hdfs://path/to/metrics.csv");
reqDataFrame.RegisterTempTable("requests");
metricDataFrame.RegisterTempTable("metrics");
// C0 - guid in requests DataFrame, C3 - guid in metrics DataFrame
var joinDataFrame = GetSqlContext().Sql(
"SELECT joinedtable.datacenter" +
", MAX(joinedtable.latency) maxlatency" +
", AVG(joinedtable.latency) avglatency " +
"FROM (" +
"SELECT a.C1 as datacenter, b.C6 as latency " +
"FROM requests a JOIN metrics b ON a.C0 = b.C3) joinedtable " +
"GROUP BY datacenter");
joinDataFrame.ShowSchema();
joinDataFrame.Show();
A simple DataFrame application using DataFrame DSL may look like the following:
// C0 - guid, C1 - datacenter
var reqDataFrame = sqlContext.TextFile(@"hdfs://path/to/requests.csv")
.Select("C0", "C1");
// C3 - guid, C6 - latency
var metricDataFrame = sqlContext.TextFile(@"hdfs://path/to/metrics.csv", ",", false, true)
.Select("C3", "C6"); //override delimiter, hasHeader & inferSchema
var joinDataFrame = reqDataFrame.Join(metricDataFrame, reqDataFrame["C0"] == metricDataFrame["C3"])
.GroupBy("C1");
var maxLatencyByDcDataFrame = joinDataFrame.Agg(new Dictionary<string, string> { { "C6", "max" } });
maxLatencyByDcDataFrame.ShowSchema();
maxLatencyByDcDataFrame.Show();
A simple Spark Streaming application that processes messages from Kafka using C# may be implemented using the following code:
StreamingContext sparkStreamingContext = StreamingContext.GetOrCreate(checkpointPath, () =>
{
var ssc = new StreamingContext(sparkContext, slideDurationInMillis);
ssc.Checkpoint(checkpointPath);
var stream = KafkaUtils.CreateDirectStream(ssc, topicList, kafkaParams, perTopicPartitionKafkaOffsets);
//message format: [timestamp],[loglevel],[logmessage]
var countByLogLevelAndTime = stream
.Map(kvp => Encoding.UTF8.GetString(kvp.Value))
.Filter(line => line.Contains(","))
.Map(line => line.Split(','))
.Map(columns => new Tuple<string, int>(
string.Format("{0},{1}", columns[0], columns[1]), 1))
.ReduceByKeyAndWindow((x, y) => x + y, (x, y) => x - y,
windowDurationInSecs, slideDurationInSecs, 3)
.Map(logLevelCountPair => string.Format("{0},{1}",
logLevelCountPair.Key, logLevelCountPair.Value));
countByLogLevelAndTime.ForeachRDD(countByLogLevel =>
{
foreach (var logCount in countByLogLevel.Collect())
Console.WriteLine(logCount);
});
return ssc;
});
sparkStreamingContext.Start();
sparkStreamingContext.AwaitTermination();
For more code samples, refer to [Mobius\examples](./examples) directory or [Mobius\csharp\Samples](./csharp/Samples) directory.
API Documentation
Refer to [Mobius C# API documentation](./csharp/Adapter/documentation/Mobius_API_Documentation.md) for the list of Spark's data processing operations supported in Mobius.
API Usage
Mobius API usage samples are available at:
[Examples folder](./examples) which contains standalone [C# and F# projects](./notes/running-mobius-app.md#running-mobius-examples-in-local-mode) that can be used as templates to start developing Mobius applications
[Samples project](./csharp/Samples/Microsoft.Spark.CSharp/) which uses a comprehensive set of Mobius APIs to implement samples that are also used for functional validation of APIs
Mobius performance test scenarios implemented in [C#](./csharp/Perf/Microsoft.Spark.CSharp) and [Scala](./scala/perf) for side by side comparison of Spark driver code
Documents
Refer to the [docs folder](docs) for design overview and other info on Mobius
Build Status
Ubuntu 14.04.3 LTS | Windows | Unit test coverage |
---|---|---|
Getting Started
Windows | Linux | |
---|---|---|
Build & run unit tests | [Build in Windows](notes/windows-instructions.md#building-mobius) | [Build in Linux](notes/linux-instructions.md#building-mobius-in-linux) |
Run samples (functional tests) in local mode | [Samples in Windows](notes/windows-instructions.md#running-samples) | [Samples in Linux](notes/linux-instructions.md#running-mobius-samples-in-linux) |
Run examples in local mode | Examples in Windows | [Examples in Linux](notes/linux-instructions.md#running-mobius-examples-in-linux) |
Run Mobius app | [Standalone cluster](notes/running-mobius-app.md#standalone-cluster)[YARN cluster](notes/running-mobius-app.md#yarn-cluster) | [Linux cluster](notes/linux-instructions.md#running-mobius-applications-in-linux)Azure HDInsight Spark ClusterAWS EMR Spark Cluster |
Run Mobius Shell | [Local](notes/mobius-shell.md#run-shell)[YARN](notes/mobius-shell.md#run-shell) | Not supported yet |
Useful Links
- [Configuration parameters in Mobius](./notes/configuration-mobius.md)
- [Troubleshoot errors in Mobius](./notes/troubleshooting-mobius.md)
- [Debug Mobius apps](./notes/running-mobius-app.md#debug-mode)
- [Implementing Spark Apps in F# using Mobius](./notes/spark-fsharp-mobius.md)
Supported Spark Versions
Mobius is built and tested with Apache Spark 1.4.1, 1.5.2, 1.6.* and 2.0.
Releases
Mobius releases are available at https://github.com/Microsoft/Mobius/releases. References needed to build C# Spark driver applicaiton using Mobius are also available in NuGet
Refer to [mobius-release-info.md](./notes/mobius-release-info.md) for the details on versioning policy and the contents of the release.
License
Mobius is licensed under the MIT license. See [LICENSE](LICENSE) file for full license information.
Community
Mobius project welcomes contributions. To contribute, follow the instructions in [CONTRIBUTING.md](./notes/CONTRIBUTING.md)
Options to ask your question to the Mobius community
- create issue on GitHub
- create post with "sparkclr" tag in Stack Overflow
- join chat at Mobius room in Gitter
- tweet @MobiusForSpark
Code of Conduct
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.
*Note that all licence references and agreements mentioned in the Mobius: C# API for Spark README section above
are relevant to that project's source code only.