Advertisement

spark开发中遇到的一些问题及解决方法总结

阅读量:

在主线程中抛出的异常 java.lang.NoSuchMethodError: 在集合操作中缺少一个方法调用。解决方案:替代为升级到 Scala 2.10 版本

在本地运行SAPRK程序时会遇到如下错误:尝试定位Hadoop二进制路径中的winutils二进制时遇到了Java IO异常:无法找到null\bin\winutils.exe。
解决方法:

  1. 从可靠的来源下载包含winutils.exe的Hadoop包:
    https://www.barik.net/archive/2015/01/19/172716/
  2. 按照指引完成解压操作
  3. 配置HADOOP_HOME环境变量:将以下路径配置为系统环境变量:
    HADOOP_HOME=E:\1-work\hadoop-2.6.0
  4. 将系统Path变量添加到$HADOOP_HOME/bin,并将该目录包含在系统路径中。
  5. 重新启动计算机

在本地环境中设置Spark应用使用Log4J的日志级别

log4j.appender.file.disable=true
log4j.appender.file.setlayout(org.apache.log4j.PatternLayout)
log4j/appender/file/layout/conversionpattern=%d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m/n

#Ignore log entries below warning level from Jetty, as the log file is slightly verbose
log4j.logger.org.eclipse.jetty=ERROR
org.eclipse jetty.level=ERROR

spark 在 yarn 环境下的提交配置

提交任务使用Yarn集群进行配置

Yarn集群模式
通过spark-submit启动Yarn集群
指定类路径为com.fangdd.daas.hbase.Hdfs2HBaseTable
设置总执行器核心数为16
分配每个执行器内存为4GB
配置默认并行度为16
指定driver内存为2GB
jar文件路径为/root/hfile/hbase-data-service-2.0-SNAPSHOT-jar-with-dependencies.jar
启动参数包括:
debugFlag, renameFlag, hdfsPath, zkQuorum,
hbaseMaster, hbaseZnode, partitions,
writeBufferSize, tgtTableName, tmpTableName,
repartitionNum等关键配置项。

为了方便本地连接Hive库并实现跨库数据访问功能,在Spark环境中需要对hive-site.xml进行适当配置以完成连接操作。

具体来说

解决方案

示例

复制代码
    <resources>
    <resource>
    <directory>src/main/resources/${package.environment}</directory>
    </resource>
    <resource>
    <directory>src/main/resources/</directory>
    </resource>
    </resources>

val spark = SparkSession.builder().configuration(rdd.sparkContext.getConfiguration).enableHiveSupport().create();

如果再不行,则在idea中用maven clean一下,能解决

6.idea spark本地连hive报如下问题

7. 在Spark开发过程中,在map等运算符中的print操作无法正常显示结果 由于Spark采用了延迟计算机制的特点,在执行完map运算后必须追加相应的action(如collect)以启动数据的计算与处理流程

本地Windows系统运行Spark JAR报错:'no filesystem for scheme hdfs'

复制代码
    	<property>
    	<name>fs.hdfs.impl</name>
    	<value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
    	<description>The FileSystem for hdfs: uris.</description>
    	</property>

刷新工程,重新运行程序,问题完美解决。

在本地Windows系统上运行Spark应用时使用JAR文件(Spark JARs)进行操作会遇到问题,在执行过程中报错于主线程(main thread),提示未能找到MySQL JDBC数据源配置错误:未发现所需的 JDBC 数据库连接信息。请参考以下链接获取所需JAR包:http://spark.apache.org/third-party-projects.html

pom文件添加

复制代码
    <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>${spark.version}</version>
    </dependency>

def getMysqlJdbcDF(spark: SparkSession, url: String, querySql: String, userName: String, passWord: String): DataFrame = {
var readConnProperties4 = Properties()
readConnProperties4.setProperty("driver", "com.mysql.jdbc.Driver")
readConnProperties4.setProperty("user", userName)
readConnProperties4.setProperty("password", passWord)
readConnProperties4.setProperty("fetchsize", "3")
spark.read.jdbc(
url,
s"($querySql) t",
readConnProperties4
)
}

全部评论 (0)

还没有任何评论哟~