用Intellij idea 编写Scala程序Spark2.0.0 依赖jar包如何解决

用Intellij idea 编写Scala程序Spark2.0.0 依赖jar包如何解决,第1张

在“File|Project Structure|Libraries”窗体中点击绿色+号,选择“Java”,在d出的窗体中选择“Spark”的安装目录,定位到Spark\jars目录,点击“OK”,把全部jar文件引入到项目中。网上和目前出版的书中讲解是spark20以下版本,采用的是把sparkle核心文件(如:“spark-assembly-130-hadoop240jar”)拷贝到Interllij IDEA安装目录下的Lib目录下,再使用Spark。由于Spark210已经取消了该文件,因此无法用原先的方法。

简介

由于spark有多种运行模式,远程调试的时候,虽然大体步骤相同,但是还是有小部分需要注意的地方,这里记录一下调试运行在spark on yarn模式下的程序

环境准备

需要完好的Hadoop,spark集群,以便于提交spark on yarn程序。我这里是基于CDH的环境

步骤

1随便写个spark程序,比如序列化一个集合,然后求和。然后使用maven打包,上传至集群。可以先提交运行一次,确保可以运行成功。

[root@kjtlxsvr5 bin]# /spark-submit --class cnsparkstudycoreParallelizeCollection --master yarn-cluster --num-executors 3 --executor-cores 2 --executor-memory 1G --driver-java-options "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787" /home/spark-study-scala-001-SNAPSHOT-jar-with-dependenciesjar

现在有两个办法可以解决这个问题。

第一个办法是节点少的话,通过修改上面IDEA远程主机地址来一个一个试。

第二办法可以精确知道ApplicationMaster在哪里:

①通过CDH进入yarn的应用程序界面

②然后点击进入该程序的详细信息界面,如下图就可以知道Applicationmaster在哪台NodeManager上:

③可以去该节点查看进程,的确有一个ApplicationMaster,然后在IDEA中修改为该远程主机地址,开始debug程序看源码吧!

一、启动方法

/data/spark-140-bin-cdh4/bin/spark-sql --master spark://master:7077 --total-executor-cores 10 --executor-memory 1g --executor-cores 2

注:/data/spark-140-bin-cdh4/为spark的安装路径

/data/spark-140-bin-cdh4/bin/spark-sql –help 查看启动选项

--master MASTER_URL 指定master url

--executor-memory MEM 每个executor的内存,默认为1G

--total-executor-cores NUM 所有executor的总核数

-e <quoted-query-string> 直接执行查询SQL

-f <filename> 以文件方式批量执行SQL

二、Spark sql对hive支持的功能

1、查询语句:SELECT GROUP BY ORDER BY CLUSTER BY SORT BY

2、hive *** 作运算:

1) 关系运算:= ==, <>, <, >, >=, <=

2) 算术运算:+, -, , /, %

3) 逻辑运算:AND, &&, OR, ||

4) 复杂的数据结构

5) 数学函数:(sign, ln, cos, etc)

6) 字符串函数:

3、 UDF

4、 UDAF

5、 用户定义的序列化格式

6、join *** 作:JOIN {LEFT|RIGHT|FULL} OUTER JOIN LEFT SEMI JOIN CROSS JOIN

7、 unions *** 作:

8、 子查询: SELECT col FROM ( SELECT a + b AS col from t1) t2

9、Sampling

10、 Explain

11、 分区表

12、 视图

13、 hive ddl功能:CREATE TABLE、CREATE TABLE AS SELECT、ALTER TABLE

14、 支持的数据类型:TINYINT SMALLINT INT BIGINT BOOLEAN FLOAT DOUBLE STRING BINARY TIMESTAMPDATE ARRAY MAP STRUCT

三、Spark sql 在客户端编程方式进行查询数据

1、启动spark-shell

/spark-shell --master spark://master:7077 --total-executor-cores 10 --executor-memory 1g --executor-cores 2

2、编写程序

val sqlContext = new orgapachesparksqlSQLContext(sc)

val df = sqlContextreadjson("/examples/src/main/resources/peoplejson")

查看所有数据:dfshow()

查看表结构:dfprintSchema()

只看name列:dfselect("name")show()

对数据运算:dfselect(df("name"), df("age") + 1)show()

过滤数据:dffilter(df("age") > 21)show()

分组统计:dfgroupBy("age")count()show()

1、查询txt数据

import sqlContextimplicits_

case class Person(name: String, age: Int)

val people = sctextFile("/examples/src/main/resources/peopletxt")map(_split(","))map(p => Person(p(0), p(1)trimtoInt))toDF()

peopleregisterTempTable("people")

val teenagers = sqlContextsql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19")

2、parquet文件

val df = sqlContextreadload("/examples/src/main/resources/usersparquet")

3、hdfs文件

val df = sqlContextreadload("hdfs://namenodeHadoop:9000/user/hive/warehouse/spark_testdb/test_parquet/part-r-00001gzparquet")

4、保存查询结果数据

val df = sqlContextreadload("/examples/src/main/resources/usersparquet")

dfselect("name", "favorite_color")writesave("namesAndFavColorsparquet“)

四、Spark sql性能调优

缓存数据表:sqlContextcacheTable("tableName")

取消缓存表:sqlContextuncacheTable("tableName")

sparksqlinMemoryColumnarStoragecompressedtrue 当设置为true时,Spark SQL将为基于数据统计信息的每列自动选择一个压缩算法。

sparksqlinMemoryColumnarStoragebatchSize 10000 柱状缓存的批数据大小。更大的批数据可以提高内存的利用率以及压缩效率,但有OOMs的风险

1、Spark脚本提交/运行/部署11spark-shell(交互窗口模式)运行Spark-shell需要指向申请资源的standalonespark集群信息,其参数为MASTER,还可以指定executor及driver的内存大小。sudospark-shell--executor-memory5g--driver-memory1g--masterspark://192168180216:7077spark-shell启动完后,可以在交互窗口中输入Scala命令,进行 *** 作,其中spark-shell已经默认生成sc对象,可以用:valuser_rdd1=sctextFile(inputpath,10)读取数据资源等。12spark-shell(脚本运行模式)上面方法需要在交互窗口中一条一条的输入scala程序;将scala程序保存在testscala文件中,可以通过以下命令一次运行该文件中的程序代码:sudospark-shell--executor-memory5g--driver-memory1g--masterspark//192168180216:7077

以上就是关于用Intellij idea 编写Scala程序Spark2.0.0 依赖jar包如何解决全部的内容,包括:用Intellij idea 编写Scala程序Spark2.0.0 依赖jar包如何解决、spark远程debug之调试spark on yarn 程序、如何使用 Spark SQL等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10169832.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存