【问题标题】:Running Teradatasql driver for python code using spark使用 spark 为 python 代码运行 Teradatasql 驱动程序
【发布时间】:2020-09-07 22:16:26
【问题描述】:

我想编写代码,使用 python 从 teradata 获取数据。代码应该在集群和本地使用 spark 运行时工作。使用 spark 运行时,我不想在执行程序上打开连接。所以计划是使用 teradatasql 包在驱动程序上运行代码。由于 teradatasql 软件包所以库我认为我没有在集群上安装 teradata 库。

我将依赖项(即 teradatasql)打包为 egg 文件,并将其作为 --py-files 传递。但是在代码上运行时,teradatasql 无法从 egg 文件中读取库。

Os 错误:teradatasql.so 无法打开共享对象文件。不是目录。

我按照以下步骤打包了 egg 文件。 1. pip install teradatasql --target./src # 注意我所有的代码都在 src 文件夹中。执行此步骤将在我的 src 文件夹中安装 teradatasql 包。它包含 teradatasql.so 库 2. setup.py中的packages=find_packages('src'), package_data={'teradatasql':['teradatasql.so']} 3. python setup.py bdist_eggg

【问题讨论】:

  • 请分享您是如何生成egg文件的,以便我们了解更多详情
  • 我分享了步骤

标签: python apache-spark teradata


【解决方案1】:

teradatasql 驱动程序使用共享库与 Teradata Database 进行通信。

如果仅重新打包驱动程序的 Python 文件部分,则 teradatasql 驱动程序将不起作用。你得到的错误将会发生。

teradatasql 驱动程序的预期用途是使用以下命令将其安装到 Python 环境中:pip install teradatasql

如果您拆开并重新打包 teradatasql 驱动程序,我们将无法为您提供有效的支持。这不是受支持的用例。

【讨论】:

  • 我用生成鸡蛋的步骤更新了我的问题。除了驱动程序的 python 部分,我还使用 setup.py 的 package_data 选项将 teradatasql.so 打包到我的 egg 中。我检查了生成的 egg 并在 teradatasql 文件夹下找到了 teradatasql.so。可能因为它是 zip(egg) 的一部分,所以图书馆没有得到认可。同样正如您所说,这不是预期用途,我将尝试直接使用它。能否请您告诉我是否可以通过 teradatasql 使用连接池。在我们的组织中,连接数是有限制的。
猜你喜欢
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
  • 1970-01-01
相关资源
最近更新 更多