python - 将数据从主机加载到 docker hive 容器

标签 python hadoop docker hive

我的主机中有一个 csv 文件,我有一个 docker 虚拟机。我想将主机中 csv 文件中的数据上传到 VM。我正在使用 python 的 hive_service 库来连接和进行查询。但是,我对如何将数据放入 VM 感到困惑。 例如,下面的脚本连接并能够查询配置单元,但在第二次查询时失败。我需要将 smpl.txt 从我的主机上传到 docker vm

import sys

from hive_service import ThriftHive
from hive_service.ttypes import HiveServerException
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol

try:
  print "1111"
  transport = TSocket.TSocket("192.168.99.100", 10000)
  transport = TTransport.TBufferedTransport(transport)
  protocol = TBinaryProtocol.TBinaryProtocol(transport)
  print "2222"
  client = ThriftHive.Client(protocol)
  transport.open()
  print "3333"

  client.execute("CREATE TABLE names (name string, value int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','")
  client.execute("LOAD DATA LOCAL INPATH './smpl.txt' OVERWRITE INTO TABLE names")
  # client.execute("SELECT * FROM orders")
  # while (1):
  #   row = client.fetchOne()
  #   if (row == None):
  #     break
  #   print row

  #client.execute("SELECT * FROM r")
  # print client.fetchAll()
  print "4444"
  transport.close()
except Thrift.TException, tx:
  print '%s' % (tx.message)

最佳答案

如果该文件必须已经在 docker VM 中,您可以考虑使用 docker cp ,它允许将本地文件复制到正在运行的容器中。

使用类似 pypi/docker-py/ 的库,这将转化为:

c = docker.Client(base_url='unix://var/run/docker.sock',
                  version='1.12', timeout=10)
c.copy(container, resource)

关于python - 将数据从主机加载到 docker hive 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33978839/

相关文章:

正则表达式 serde 读取配置单元中的日志文件

hadoop - 使用 Hue + Beeswax 运行定义自定义 UDF 的 Hive 查询时如何刷新/清除 DistributedCache?

hadoop - fsimage 和 edit log 文件实际存储在哪个文件夹或什么位置,供 namenode 在启动期间读取和合并?

python - 无法使用 twine 上传到 PyPI ("invalid command")

python - 类型错误 : __init__() takes exactly 2 arguments (3 given) - Odoo v8 to Odoo v10 community

java - mac vist docker hadoop hdfs datanode失败

python - 如何使用 SQLAlchemy 连接 Windows 10 中 Docker 上的 Postgres 数据库?

rgdal 不会安装在 docker ubuntu 18.04 "ERROR::command not found"

python - 像这样理解 Python 函数 arg 符号 : str. find(sub[, start[, end]])

python - Python 2.7 不支持 Readline