美文网首页
# 数据分析最佳实践 - 数据梳理、处理、提交集群

# 数据分析最佳实践 - 数据梳理、处理、提交集群

作者: Sevsea | 来源:发表于2018-07-10 11:37 被阅读0次

之前从数据库中取出数据,都是dataset/dataframe进行处理的,与之相较rdd操作起来更加丝滑顺手,思路也更加清晰了。

0x01数据梳理&处理方式:

  • 筛选和过滤

      val textFile = sc.textFile ( "hdfs://xxxxxxxxx.net/xxx/xxx/xxx" )
    
      var linesWithSpark = textFile.filter ( line => line.contains ( "[需要筛选包含的字符串]" ) )
    
  • 对rdd中的数据做初步处理:

      //此处处理为:
      //1.先对数据进行分割,根据数据组成形式,这里根据\t分割;
      //2.分割完的数据,对其中的数据做去无效字符处理;
      //3.尝试对各个字段字符做反序列化处理;
    
      val results = linesWithSpark.map ( line =>
      line.split ( "\t" )( 5 ).substring(1,line.split ( "\t" )(5).length-1)
       ).map (
      log => try {
          PhpUnserializer.parse ( log ).asInstanceOf [Map[String, Any]]
      } catch {
        case ex: Exception => println ( log )
      } )
    
  • 数据选择性重新聚合:

      //此处处理为:
      //把重新处理好的rdd,最后过滤筛选入一个新的rdd;
      val array_spark = strSN_.map ( log => log.split ( "," ) )
      val new_all = array_spark.filter ( _.length == 5 ).map ( x => (x ( 0 ), x ( 1 ), x ( 2 ), x ( 3 ),x(4) )).filter(_._2!="None").filter(_._3!="None")
    
  • 数据统计&计算处理:

      //此处处理为:
      //1.按照rdd中第五个元素进行统计数量,并按照大小排序;
      //2.结果设置为tuple形式展示;
      val Countbyxx = Count_all.groupBy ( _._5 ).sortBy ( _._2.toArray.length, false ).map ( line => (line._1, line._2.toArray.length) ) 
      
      //此处处理为:
      //1.对rdd中某个tuple求方差并将结果加入新的rdd
       var stdev = CountList.collect().map(line=>(line._1->getStdev(line._2,ss))) 
    

0x02提交集群

网上太多集群提交的方法,由数据打包提交到集群遇到的问题说,过程中共遇到三个问题:

  • 找不到第三方Jar包:

spark-submit时 --jars /path/to/jar/xxx.jar可以直接将本地的jar包带入集群中提交。

  • setmaster

如果是提交到公有集群的jar包,不再设置setmaster("local"),而是采用命令行中设置yarn-client的方式:
--master YARN-client

  • spark集群读取本地文件:

方案1:将本地文件上传到hdfs读取,但是遇到第三方包无法直接对hdfs读取的文件进行操作的状况;

方案2:把本地文件同步到集群每台机器,如若是公司集群,此方案不可行;

方案3:(最佳方案)
在spark提交任务前文件读取到driver内存,即
在创建SparkContext或SparkSession之前,先读取文件到driver内存。

故最终方法为:

spark-submit --jars /path/to/jars/xxx.jar --class com.App.loliCount /path/to/jar/your-spark-subject.jar --master YARN-client 

//注意有时--jars需要在第一个参数时才能提交时不报错。

Done.

#######spark就像一本好书,每次使用都有更深一次的理解。########

相关文章

  • # 数据分析最佳实践 - 数据梳理、处理、提交集群

    之前从数据库中取出数据,都是dataset/dataframe进行处理的,与之相较rdd操作起来更加丝滑顺手,思路...

  • SpringMVC之数据处理

    六、数据处理 目录:处理提交数据、数据显示到前端、乱码问题 1.处理提交数据 1)提交的域名称和处理方法的参数名一...

  • OpenGL ES for iOS - 8

    处理顶点数据的最佳实践 要使用 OpenGL ES 渲染帧,您的应用程序需要配置图形管道并提交要绘制的图形基元。在...

  • 数据时代技能书单

    大数据时代,掌握处理数据的技能是必要的,书单包括数据清洗+数据挖掘+数据分析...... 1、数据清洗入门与实践 ...

  • Apache Sqoop - Overview(概述)

    Apache Sqoop 概述 使用Hadoop来分析和处理数据需要将数据加载到集群中并且将它和企业生产数据库中的...

  • 你也可以这么优秀

    小知识点-大数据处理之初步理解 单机处理时扩展到集群处理:单机数据处理à集群大数据处理 对应的变化: [if !s...

  • Spring Validation实现原理分析

    最近要做动态数据的提交处理,即需要分析提交数据字段定义信息后才能明确对应的具体字段类型,进而做数据类型转换和字段有...

  • 适用于2018年的10大最佳大数据分析工具

    1.最佳大数据分析工具 在这篇关于最佳大数据分析工具的文章中,我们将了解最佳数据分析工具。此外,还将研究这些数据分...

  • 数据分析的流程

    以我的数据日常为例,简单将数据分析的流程梳理一下。数据的整个流程可以划分为 数据目的 数据获取 数据处理及认知 模...

  • 从自动化到智能化,网易杭研的AIOps探索与实践

    在大数据时代下,我们借助机器学习、数据仓库、大数据平台等大数据技术手段,将运维产生的数据进行分析、处理,得出最佳运...

网友评论

      本文标题:# 数据分析最佳实践 - 数据梳理、处理、提交集群

      本文链接:https://www.haomeiwen.com/subject/zmkfpftx.html