与Dataproc + Datalab +源代码存储库集成

问题描述 投票:2回答:1

有人能够集成Dataproc,Datalab和源代码库吗?正如我们许多人已经看到,当您调用init操作来安装datalab时,它不会创建源代码仓库。我正在尝试实现一个完整的端到端解决方案,用户登录到datalab笔记本,通过Pyspark与Dataproc交互,并将笔记本签入源代码仓库。我没有能够像我之前指出的那样使用init动作执行此操作。我也尝试安装dataproc然后将datalab作为单独的安装(这次它创建源代码库),但是,我不能在这个datalab笔记本上运行任何spark代码。有人可以给我一些关于如何实现这一目标的指示吗?任何和所有人都表示赞赏。

Code in 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个回答
2
投票

不幸的是,需要一些前期工作才能从init动作在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

© www.soinside.com 2019 - 2024. All rights reserved.