在 Datalab 中查询 Hive 表时出现问题

2024-01-06

我已经创建了一个 dataproc 集群,其中包含更新的 init 操作来安装 datalab。

一切正常,除了当我从 Datalab 笔记本查询 Hive 表时,我遇到了

hc.sql(“””select * from invoices limit 10”””)

"java.lang.ClassNotFoundException: Class com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem not found" exception

创建集群

gcloud beta dataproc clusters create ds-cluster \
--project my-exercise-project \
--region us-west1 \
--zone us-west1-b \
--bucket dataproc-datalab \
--scopes cloud-platform  \
--num-workers 2  \
--enable-component-gateway  \
--initialization-actions gs://dataproc_mybucket/datalab-updated.sh,gs://dataproc-initialization-actions/connectors/connectors.sh  \
--metadata 'CONDA_PACKAGES="python==3.5"'  \
--metadata gcs-connector-version=1.9.11  

数据实验室更新.sh

  -v "${DATALAB_DIR}:/content/datalab" ${VOLUME_FLAGS} datalab-pyspark; then
    mkdir -p ${HOME}/datalab
    gcloud source repos clone datalab-notebooks ${HOME}/datalab/notebooks

在数据实验室笔记本中

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

UPDATE

spark._jsc.hadoopConfiguration().set('fs.gs.impl', 'com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem')
spark._jsc.hadoopConfiguration().set('fs.gs.auth.service.account.enable', 'true')
spark._jsc.hadoopConfiguration().set('google.cloud.auth.service.account.json.keyfile', "~/Downloads/my-exercise-project-f47054fc6fd8.json")

更新2(datalab-updated.sh)

function run_datalab(){
  if docker run -d --restart always --net=host  \
      -v "${DATALAB_DIR}:/content/datalab" ${VOLUME_FLAGS} datalab-pyspark; then
    mkdir -p ${HOME}/datalab
    gcloud source repos clone datalab-notebooks ${HOME}/datalab/notebooks
    echo 'Cloud Datalab Jupyter server successfully deployed.'
  else
    err 'Failed to run Cloud Datalab'
  fi
}

你应该使用Datalab初始化操作 https://github.com/GoogleCloudPlatform/dataproc-initialization-actions/tree/master/datalab在 Dataproc 集群上安装 Datalab:

gcloud dataproc clusters create ${CLUSTER} \
    --image-version=1.3 \
    --scopes cloud-platform \
    --initialization-actions=gs://dataproc-initialization-actions/datalab/datalab.sh

此 Hive 在 Datalab 中与 GCS 一起使用后:

from pyspark.sql import HiveContext
hc=HiveContext(sc)
hc.sql("""SHOW TABLES IN default""").show()

Output:

+--------+---------+-----------+
|database|tableName|isTemporary|
+--------+---------+-----------+
+--------+---------+-----------+

在 Datalab 中使用 Hive 在 GCS 上创建外部表:

hc.sql("""CREATE EXTERNAL TABLE IF NOT EXISTS INVOICES
      (SubmissionDate DATE, TransactionAmount DOUBLE, TransactionType STRING)
      STORED AS PARQUET
      LOCATION 'gs://<BUCKET>/datasets/invoices'""")

Output:

DataFrame[]

在Datalab中使用Hive查询GCS表:

hc.sql("""SELECT * FROM invoices LIMIT 10""")

Output:

DataFrame[SubmissionDate: date, TransactionAmount: double, TransactionType: string]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Datalab 中查询 Hive 表时出现问题 的相关文章

随机推荐

  • 暂时修复后恢复随机种子的最佳方法是什么?

    这是 取消种子 随机数生成器的唯一方法吗 np random seed int time time 如果您希望在循环中重复某些代码 例如测试 而其他代码希望每个循环都是随机的 那么在设置种子后如何将种子 重置 为随机数生成器 下面的代码说明
  • TensorFlow 和 Keras 的相同实现之间的不同行为

    我的机器上有 TensorFlow 1 9 和 Keras 2 0 8 当使用一些玩具数据训练神经网络时 TensorFlow 和 Keras 之间产生的训练曲线非常不同 我不明白为什么 对于 Keras 实现 网络学习得很好 损失持续减少
  • 类型错误 float 不可调用。我试图弄清楚为什么我的 elif 语句不可调用[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions from
  • 如何使用 GORM 创建复合主键?

    我有三个领域类 Beer Review 和 Reviewer 我希望 Review 表在 Beer 和 Reviewer 之间创建多对多关系 因此我希望 Review 的主键是 Beer 和 Reviewer 的 id 字段的组合 我正在关
  • 结合 geojson 和 json 制作传单

    我有一张带有 GeoJson 图层的 Leaflet 地图 var objJson https raw githubusercontent com salucci Leaflet Teste master BrasilNovo json g
  • 如何替换已弃用的 android.support.v4.app.ActionBarDrawerToggle

    昨天 17 10 2014 我更新了 Android SDK 并support library v4 jar我的应用程序 现在我收到与以下内容相关的弃用警告ActionBarDrawerToggle 阅读文档 https developer
  • 什么时候使用vtable?

    vtable 仅用于虚拟函数查找 还是也用于普通成员函数查找 从技术上讲 这是一个实现细节 C 标准没有提及 vtable 或 vptr 但通常情况下 编译器只会在多态意义上 即通过指向基类的指针 引用 调用成员函数时才会选择使用 vtab
  • 加快 Firebase 存储下载速度

    我正在尝试从 Firebase 存储中提取视频并将其放入我的 Android 应用程序上的幻灯片中 但视频需要很长时间才能加载 有谁有任何替代方案或方法来加快数据下载速度 您可以将文件存储在区域存储中 例如 us east1 请参阅http
  • 如何仅显示一页以上的报表的第 x 页(共 y 页)

    我正在使用 jasper reports 4 5 0 我正在使用这个碧玉生成不同格式的报告 我想在我的报告中显示第 X 页 共 Y 页 所以我使用 iReport 提供的页码文本字段 该字段在调色板中可用 它显示所有报告中的页码 甚至是单页
  • 从更新站点下载 eclipse 插件的工具

    我需要在未连接到 Internet 的计算机上安装 eclipse 插件 但找不到用于本地安装的 dist 是否有一个工具可以从更新站点下载插件并创建本地安装存档 或本地更新站点 有传言说你可以用 eclipse 来做到这一点 但我找不到任
  • 如何更改 UITextField 上清除按钮的色调颜色

    我的 UITextfield 上有一个自动生成的清除按钮 具有默认的蓝色色调 我无法将色调颜色更改为白色 我尝试修改故事板和代码但没有成功 并且我不想使用自定义图像 如何在不使用自定义图像的情况下更改默认的透明按钮色调颜色 干得好 Tint
  • HTML.fromHTML - Android 中的 TagHandler

    我有一个 TextView 我想将 HTML 设置为 HTML fromHTML 但我想过滤掉所有 img 带有标签处理程序的标签 我想将所有链接 src 保存在列表数组中 那可能吗 Thanks 是的 这是可能的 您可以使用jsoup h
  • 如何确定电子邮件地址是 Microsoft“工作或学校”帐户还是 Microsoft 帐户

    我想在 Azure 多租户环境中对 Microsoft 帐户和 工作或学校 帐户进行身份验证 每种身份验证类型需要不同的请求 如果我尝试针对 工作或学校 请求以 Microsoft 帐户身份登录 则登录将在 Microsoft 登录时失败
  • 在 api 27、28、29 中混淆应用程序时,工作管理器不会运行

    我有一个每 15 分钟运行一次的定期任务 当混淆应用程序时 如果应用程序从后台被终止 工作管理器将不起作用 测试设备 一加7T 诺基亚5 Google Pixel 2模拟器 仅当应用程序位于前台或后台时 工作管理器才会执行 禁用 progu
  • 如何在混合(C#/C++)调试中设置数据断点?

    我用 C 启动程序 然后调用一些非托管 C 当我在非托管 C 中中断一行时 新数据断点 菜单项呈灰色 有没有办法解决 所以要做到这一点我必须 将非托管dll设置为启动项目 将托管程序设置为启动命令 将调试模式设置为Native 中断执行 或
  • 使用有关 WooCommerce 用户创建的生成密码发送电子邮件通知

    在 WooCommerce 中 使用下面的代码我创建新的 WP User 其中随机密码并将用户角色设置为 客户 我想在购买时自动创建帐户 然后我用WC Emails将登录详细信息发送给买家 在这种情况下 我需要纯密码 但我真的不知道为什么附
  • 如何锁定 SVN 主干(除了来自分支的合并)?

    我想阻止开发人员直接在主干上工作 我的目标是强制所有开发人员离开主干并在自己的分支上工作 直到 CI 测试通过 然后 他们必须从主干合并到分支 以获取最新更改 运行并通过测试 然后再合并回主干 这种 SVN 使用方式有什么规则吗 限制主干提
  • “grep”命令的退出状态代码

    The grep http linux die net man 1 grep手动在退出状态部分报告 EXIT STATUS The exit status is 0 if selected lines are found and 1 if
  • CTE 的意外结果

    我创建了一个使用多个 CTE 的复杂流程 主要用于递归分层工作 在小样本数据集上 一切都按预期进行 但是当我将代码应用于大数据集时 我收到了意外 且错误 的结果 我想我已经将范围缩小到了 CTE 递归 CTE 是在几个早期 CTE 中处理的
  • 在 Datalab 中查询 Hive 表时出现问题

    我已经创建了一个 dataproc 集群 其中包含更新的 init 操作来安装 datalab 一切正常 除了当我从 Datalab 笔记本查询 Hive 表时 我遇到了 hc sql select from invoices limit