org.apache.spark.sql.SQLContext无法加载文件
我有一个简单的Spark工作,它从pipe道分离的文件读取值,并对其执行一些业务逻辑,并将处理后的值写入我们的数据库。
所以要加载文件,我使用org.apache.spark.sql.SQLContext
。 这是我必须加载文件作为DataFrame
DataFrame df = sqlContext.read() .format("com.databricks.spark.csv") .option("header", "false") .option("comment", null) .option("delimiter", "|") .option("quote", null) .load(pathToTheFile);
现在的问题是1. load
function无法加载文件2.它没有给出关于这个问题的很多细节(例外),除了在我的控制台我得到
WARN 2017-11-07 17:26:40,108 akka.remote.ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkExecutor@172.17.0.2:35359] has failed, address is now gated for [5000] ms. Reason is: [Disassociated]. ERROR 2017-11-07 17:26:40,134 org.apache.spark.scheduler.cluster.SparkDeploySchedulerBackend: Asked to remove non-existent executor 0
并继续轮询。
我相信,该文件是可用的格式正确的预期文件夹。 但不知道这个日志是什么,为什么SQLContext
能够加载文件。
这是我的build.gradle的依赖关系部分:
dependencies { provided( [group: 'org.apache.spark', name: 'spark-core_2.10', version: '1.4.0'], [group: 'org.apache.spark', name: 'spark-sql_2.10', version: '1.4.0'], [group: 'com.datastax.spark', name: 'spark-cassandra-connector-java_2.10', version: '1.4.0'] ) compile([ [group: 'com.databricks', name: 'spark-csv_2.10', version: '1.4.0'], ]) }
而且我正在docker
集装箱内运行这项工作
任何帮助,将不胜感激
你可以检查这个问题是不是这个线程相同:
长话短说,阿卡为每项工作打开了dynamic, 随机的端口 。 所以,简单的NAT失败。
你可以尝试一些DNS服务器和--net=host
的--net=host
。基于Jacob的build议,我开始使用
--net=host
,这是--net=host
最新版本中的一个新选项。
我也设置SPARK_LOCAL_IP
到主机的IP地址,然后AKKA不使用主机名,我不需要Spark驱动程序的主机名是可parsing的。
您也可以将您的Dockerfile与P7h / docker-spark 2.2.0中使用的Dockerfile进行比较,看看是否有任何差异可以解释这个问题。