zoukankan      html  css  js  c++  java
  • 【西天取经】(Spark入门)Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

    【西天取经】(入门)windows10 安装spark3.0, .net core 创建 spark 程序

    1、安装java8,配置环境变量

    JDK:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

    java -version

     

      2、安装python,配置环境变量

    下载: https://www.python.org/

     

     

    3、安装Spark

    下载: https://spark.apache.org/downloads.html

    解压缩这个spark-3.0.1-bin-hadoop3.2.tgz文件到D:spark目录中

    添加Hadoop,windows使用 winutils.exe 这个文件

    克隆: https://github.com/steveloughran/winutils  代码仓库到本地,

     复制hadoop-3.0.0里面的bin目录到D:hadoop目录

    4、配置环境变量

    • 配置Spark环境变量:

    •  配置Hadoop环境变量:

     

    • PATH变量增加Java,Spark,Hadoop环境变量

      

    •  设置Spark本地主机名的环境变量:SPARK_LOCAL_HOSTNAME = localhost

    查看Spark是否安装成功(参考微软官方的URL)

    spark-submit --version

    5、 运行Spark

    spark-shell

     

    创建word.txt文件:

     

     写入文件内容:

    Hello Scala
    Hello Spark
    Hello Scala

    执行命令:

    scala> sc.textFile("data/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

    浏览器:http://localhost:4040/

    至此:​Spark本地windows的环境就配好了。


    接下来就该net core程序闪亮登场了

    Install .NET for Apache Spark(参考微软官方的URL)

    下载:https://github.com/dotnet/spark/releases/tag/v1.0.0

     解压Microsoft.Spark.Worker.netcoreapp3.1.win-x64-1.0.0.zipD:spark目录里,设置环境变量

    Visual Studio 2019创建“HelloSpark” Console的项目

    HelloSpark.csproj文件内容:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Microsoft.Spark" Version="1.0.0" />
      </ItemGroup>
    
      <ItemGroup>
        <None Update="input.txt">
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
        <None Update="people.json">
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
      </ItemGroup>
    
    </Project>

    people.json文件内容:

    {"name": "Michael" }
    {"name":"Andy", "age":30}
    {"name":"Justin", "age":19}

    input.txt文件内容:

    Hello World
    This .NET app uses .NET for Apache Spark
    This .NET app counts words with Apache Spark

    Program.cs:

    using Microsoft.Spark.Sql;
    
    namespace HelloSpark
    {
        class Program
        {
            static void Main(string[] args)
            {
                var spark = SparkSession.Builder().AppName("word_count_sample").GetOrCreate();
    
                DataFrame peopleFrame = spark.Read().Json("people.json");
                peopleFrame.Show();
    
                DataFrame dataFrame = spark.Read().Text("input.txt");
    
                DataFrame words = dataFrame
                                           .Select(Functions.Split(Functions.Col("value"), " ").Alias("words"))
                                           .Select(Functions.Explode(Functions.Col("words"))
                                           .Alias("word"))
                                           .GroupBy("word")
                                           .Count()
                                           .OrderBy(Functions.Col("count").Desc());
    
                words.Show();
    
                spark.Stop();
            }
        }
    }

    编译:

    dotnet build

    运行net core的Spark程序的代码有点复杂:

    %SPARK_HOME%inspark-submit --class org.apache.spark.deploy.dotnet.DotnetRunner --master local binDebug
    etcoreapp3.1microsoft-spark-3-0_2.12-1.0.0.jar dotnet binDebug
    etcoreapp3.1HelloSpark.dll

     运行结果:


    Spark框架不仅有JVM系的位置,就在18天前也有了.net的一席之地!

    以上内容仅作为.net for spark入门程序,由于本人刚接触Spark,水平有限只能给大家做到搭环境写个demo这一步了,希望.net for spark 在不远的将来能够给.net技术栈贡献更多的​大数据项目。

     
  • 相关阅读:
    Vue.js实现的计算器功能完整示例
    vue实现简易计算器
    Vuex中mutations与actions的区别详解
    两个子组件之间的传值
    JS操作元素节点(非常详细)
    js包装类
    Vue Router 的params和query传参的使用和区别(详尽)
    初步了解生命周期
    简单介绍一下Progressive Web App(PWA)
    webpack学习笔记(阮一峰教程demo)
  • 原文地址:https://www.cnblogs.com/xitianqujing/p/13909384.html
Copyright © 2011-2022 走看看