【问题标题】:Integration with Dataproc + Datalab + Source Code repos与 Dataproc + Datalab + 源代码存储库集成
【发布时间】:2019-05-01 23:34:24
【问题描述】:

有人可以集成 Dataproc、Datalab 和 Source code repo 吗?正如我们许多人所看到的,当您调用 init 操作来安装 datalab 时,它不会创建源代码存储库。我正在尝试实现一个完整的端到端解决方案,其中用户登录到 datalab 笔记本,通过 Pyspark 与 Dataproc 交互并将笔记本签入到源代码存储库。就像我之前指出的那样,我无法使用 init 操作来做到这一点。我还尝试安装 dataproc,然后将 datalab 作为单独的安装(这次它创建源存储库),但是,我无法在这个 datalab 笔记本上运行任何 spark 代码。有人可以给我一些关于如何实现这一目标的指示吗?不胜感激。

Datalab 中的代码

from pyspark.sql import HiveContext
hc=HiveContext(sc)
hc.sql("""show databases""").show()
hc.sql("""CREATE EXTERNAL TABLE IF NOT EXISTS INVOICES
      (SubmissionDate DATE, TransactionAmount DOUBLE, TransactionType STRING)
      STORED AS PARQUET
      LOCATION 'gs://my-exercise-project-2019016-ds-team/datasets/invoices'""")
hc.sql("""select * from invoices limit 10""").show()

错误

Py4JJavaError: An error occurred while calling o55.sql.
: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem not found
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2395)
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:3208)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3240)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:121)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:3291)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3259)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:470)
    at org.apache.hadoop.fs.Path.getFileSystem(Path.java:356)
    at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$or

【问题讨论】:

标签: google-cloud-dataproc google-cloud-datalab google-cloud-source-repos


【解决方案1】:

不幸的是,需要一些准备工作才能通过初始化操作在 Cloud Source Repositories 中创建 datalab-notebooks 存储库。

原因是创建仓库需要VM的服务账号对项目有“source.repos.create”的IAM权限,默认不是这样。

您可以将该权限授予服务帐户,然后通过gcloud source repos create datalab-notebooks 创建存储库,或者在创建集群之前手动创建存储库。

然后,要在启动脚本中克隆存储库,请添加以下行:

mkdir -p ${HOME}/datalab
gcloud source repos clone datalab-notebooks ${HOME}/datalab/notebooks

如果您正在修改 Datalab 的预设初始化操作,那么我建议添加这些行 here

【讨论】:

  • 谢谢你。感谢帮助,它就像一个魅力。一个问题是,虽然我能够在笔记本中创建一个配置单元表,但由于“找不到类 com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem”,我无法查询它。您能否提供您的专家建议..
  • 您可能希望针对 ClassNotFoundException 单独提出一个问题
  • 在单独的问题中,您可以包含您用于创建 Dataproc 集群的确切命令行调用的所有详细信息以及您正在使用的任何自定义初始化操作的内容。重要的是,请务必提及您是否正在编辑和 conda_env 类型的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
相关资源
最近更新 更多