我正在使用https://github.com/potix2/spark-google-spreadsheets库来阅读spark中的电子表格文件。它在我当地完美运作。
val df = sqlContext.read.
format("com.github.potix2.spark.google.spreadsheets").
option("serviceAccountId", "xxxxxx@developer.gserviceaccount.com").
option("credentialPath", "/path/to/credentail.p12").
load("<spreadsheetId>/worksheet1")
我创建了一个包含所有凭据的新程序集jar,并使用该jar来读取文件。但我在阅读credentialPath文件时面临问题。我尝试使用
getClass.getResourceAsStream("/resources/Aircraft/allAircraft.txt")
但是库只支持绝对路径。请帮我解决这个问题。
答案 0 :(得分:0)
使用SBT并尝试typesafe config library。
这是simple but complete sample,它从resources
文件夹中的配置文件中读取一些信息。
然后你可以使用sbt-assembly插件组装一个jar文件。
答案 1 :(得分:0)
您可以使用--files
或spark-submit
的{{1}}参数来分发凭据文件。如果要在工作节点中获取凭证文件的本地路径,则应调用SparkContext.addFile()
。
SparkFiles.get("credential filename")
答案 2 :(得分:0)
如果您在Databricks环境中工作,则可以upload the credentials file。
设置GOOGLE_APPLICATION_CREDENTIALS
环境变量as described here并不能帮助您解决此要求,因为它是文件路径的链接,而不是实际的凭证。有关获取正确凭据和使用库的更多详细信息,请参见here。