Chr*_*now 4 apache-spark ibm-cloud
我正在尝试在Bluemix上运行的Analytics for Apache Spark上运行笔记本,但是我遇到了以下错误:
Exception: ("You must build Spark with Hive. Export 'SPARK_HIVE=true' and
run build/sbt assembly", Py4JJavaError(u'An error occurred while calling
None.org.apache.spark.sql.hive.HiveContext.\n', JavaObject id=o38))
Run Code Online (Sandbox Code Playgroud)
错误是间歇性的 - 它并不总是发生.有问题的代码行是:
df = sqlContext.read.format('jdbc').options(
url=url,
driver='com.ibm.db2.jcc.DB2Driver',
dbtable='SAMPLE.ASSETDATA'
).load()
Run Code Online (Sandbox Code Playgroud)
stackoverflow上有一些类似的问题,但他们并没有询问bluemix上的spark服务.
该语句初始化了一个隐藏的HiveContext.然后,HiveContext初始化本地Derby数据库以保存其元数据.默认情况下,Derby数据库在当前目录中创建.报告的问题在这些情况下发生(除其他外):
在IBM更改默认设置以避免此问题之前,可能的解决方法是:
对于案例1,删除剩余的锁定文件.从Python笔记本中,这可以通过执行:
!rm -f ./metastore_db/*.lck
Run Code Online (Sandbox Code Playgroud)对于案例2,在创建Hive上下文之前更改当前工作目录.在Python笔记本中,这将更改为新创建的目录:
import os
import tempfile
os.chdir(tempfile.mkdtemp())
Run Code Online (Sandbox Code Playgroud)
但要注意,每次运行该笔记本时,它都会使文件系统与新目录和Derby数据库混乱.
我碰巧知道IBM正在修复.请仅在遇到问题时使用这些解决方法,而不是主动使用.
SQLContext在使用之前创建一个新对象sqlContext:
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
Run Code Online (Sandbox Code Playgroud)
然后再次运行代码.
如果您有多个笔记本电脑使用开箱即用,则会发生此错误sqlContext.
| 归档时间: |
|
| 查看次数: |
3916 次 |
| 最近记录: |