在“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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)