用于将配置单元元数据摄取到Google云数据目录中的库

google-datacatalog-hive-connector的Python项目详细描述


google datacatalog配置单元连接器

用于将配置单元元数据摄取到Google云数据目录中的库。 您可以直接连接到配置单元元存储或使用cloudrun使用消息事件。在

此连接器已准备好与Hive Metastore 2.3.0版本配合使用, 由PostgreSQL或MySQL数据库支持。在

Python packagePyPiLicenseIssues

免责声明:这不是官方支持的谷歌产品。

目录


1。安装

使用pip在virtualenv中安装此库。virtualenv是一个用于 创建隔离的Python环境。它解决的基本问题是 依赖项和版本,以及间接的权限。在

使用virtualenv,可以在不需要系统的情况下安装此库 安装权限,并且不会与已安装的系统冲突 依赖关系。确保使用python3.7+。在

1.1条。Mac/Linux

pip3 install virtualenv
virtualenv --python python3.7 <your-env>
source <your-env>/bin/activate
<your-env>/bin/pip install google-datacatalog-hive-connector

1.2条。Windows

^{pr2}$

1.3条。从源安装

1.3.1。获取代码

git clone https://github.com/GoogleCloudPlatform/datacatalog-connectors-hive/
cd datacatalog-connectors-hive/google-datacatalog-hive-connector

1.3.2。创建并激活virtualenv

pip3 install virtualenv
virtualenv --python python3.7 <your-env> 
source <your-env>/bin/activate

2。环境设置

2.1条。身份验证凭据

2.1.1。创建服务帐户并授予其以下角色

  • 数据目录管理员

2.1.2。下载一个JSON密钥并将其另存为

  • <YOUR-CREDENTIALS_FILES_FOLDER>/hive2dc-datacatalog-credentials.json

Please notice this folder and file will be required in next steps.

2.2条。设置环境变量以连接到配置单元元存储

根据您的环境替换以下值:

exportGOOGLE_APPLICATION_CREDENTIALS=data_catalog_credentials_file

exportHIVE2DC_DATACATALOG_PROJECT_ID=google_cloud_project_id
exportHIVE2DC_DATACATALOG_LOCATION_ID=us-google_cloud_location_id
exportHIVE2DC_HIVE_METASTORE_DB_HOST=hive_metastore_db_server
exportHIVE2DC_HIVE_METASTORE_DB_USER=hive_metastore_db_user
exportHIVE2DC_HIVE_METASTORE_DB_PASS=hive_metastore_db_pass
exportHIVE2DC_HIVE_METASTORE_DB_NAME=hive_metastore_db_name
exportHIVE2DC_HIVE_METASTORE_DB_TYPE=mysql or postgres

如果要连接到MySQL支持的配置单元元存储,请确保在HIVE2DC_HIVE_METASTORE_DB_NAME上使用mysql,如果是PostgreSQL支持的配置单元元存储,请确保使用postgres。在

3。运行入口点

3.1条。运行Python入口点

  • 虚拟人
google-datacatalog-hive-connector \
--datacatalog-project-id=$HIVE2DC_DATACATALOG_PROJECT_ID\
--datacatalog-location-id=$HIVE2DC_DATACATALOG_LOCATION_ID\
--hive-metastore-db-host=$HIVE2DC_HIVE_METASTORE_DB_HOST\
--hive-metastore-db-user=$HIVE2DC_HIVE_METASTORE_DB_USER\
--hive-metastore-db-pass=$HIVE2DC_HIVE_METASTORE_DB_PASS\
--hive-metastore-db-name=$HIVE2DC_HIVE_METASTORE_DB_NAME\
--hive-metastore-db-type=$HIVE2DC_HIVE_METASTORE_DB_TYPE

3.2条。运行Docker入口点

如果您的配置单元元存储数据库在本地主机环境中运行,请传递--network=“host”

docker build -t hive2datacatalog .
docker run --network="host" --rm --tty -v data:/data hive2datacatalog --datacatalog-project-id=$HIVE2DC_DATACATALOG_PROJECT_ID --datacatalog-location-id=$HIVE2DC_DATACATALOG_LOCATION_ID --hive-metastore-db-host=$HIVE2DC_HIVE_METASTORE_DB_HOST --hive-metastore-db-user=$HIVE2DC_HIVE_METASTORE_DB_USER --hive-metastore-db-pass=$HIVE2DC_HIVE_METASTORE_DB_PASS --hive-metastore-db-name=$HIVE2DC_HIVE_METASTORE_DB_NAME --hive-metastore-db-type=$HIVE2DC_HIVE_METASTORE_DB_TYPE

4。在云运行上部署消息事件使用者(可选)

4.1条。将环境变量设置为部署到云运行

根据您的环境替换以下值:

exportGOOGLE_APPLICATION_CREDENTIALS=data_catalog_credentials_file

exportHIVE2DC_DATACATALOG_PROJECT_ID=google_cloud_project_id
exportHIVE2DC_DATACATALOG_LOCATION_ID=us-google_cloud_location_id

4.2条。执行部署脚本

source deploy.sh

如果部署成功,您将看到云运行端点,例如: https://hive-sync-example-uc.a.run.app

保存下一步所需的端点。在

4.3。创建您的发布/订阅主题和订阅

4.3.1设置其他环境变量

替换为您的云运行终结点:

exportHIVE2DC_DATACATALOG_TOPIC_ID=google_cloud_topic_id
exportHIVE2DC_DATACATALOG_APP_ENDPOINT=https://hive-sync-example-uc.a.run.app

4.3.2执行pubsub配置脚本

source tools/create_pub_sub_run_invoker.sh

4.3.4向您的发布/订阅主题发送消息进行测试

您可以在以下位置查看有效的消息事件示例:tools/resources/*.json

5。工具(可选)

5.1条。从配置单元条目组清除DataCatalog上的所有条目

运行python tools/cleanup_datacatalog.py

5.2条。Hive2Datacatalog库用法示例

运行python tools/hive2datacatalog_client_sample.py

6。开发者环境

6.1条。安装并运行Yapf formatter

pip install --upgrade yapf

# Auto update files
yapf --in-place --recursive src tests

# Show diff
yapf --diff --recursive src tests

# Set up pre-commit hook# From the root of your git project.
curl -o pre-commit.sh https://raw.githubusercontent.com/google/yapf/master/plugins/pre-commit.sh
chmod a+x pre-commit.sh
mv pre-commit.sh .git/hooks/pre-commit

6.2条。安装并运行Flake8 linter

pip install --upgrade flake8
flake8 src tests

6.3条。运行测试

python setup.py test

7。指标

Metrics README.md

8。连接器体系结构

Architecture README.md

9。故障排除

如果您收到错误:

OSError: mysql_config not found

or

sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:MySQL

在t中找不到某些系统库或MySQL驱动程序他在运行机器,尝试通过运行(在linux机器上)来安装它:

sudo apt-get install libmysqlclient-dev python-dev

如果包libmysqlclient-dev不可用,请使用default-libmysqlclient-dev

sudo apt-get install default-libmysqlclient-dev  python-dev

在连接器执行达到数据目录配额限制的情况下,将引发错误并记录以下详细信息,具体取决于执行的读/写/搜索操作:

status = StatusCode.RESOURCE_EXHAUSTED
details = "Quota exceeded for quota metric 'Read requests' and limit 'Read requests per minute' of service 'datacatalog.googleapis.com' for consumer 'project_number:1111111111111'."
debug_error_string = 
"{"created":"@1587396969.506556000", "description":"Error received from peer ipv4:172.217.29.42:443","file":"src/core/lib/surface/call.cc","file_line":1056,"grpc_message":"Quota exceeded for quota metric 'Read requests' and limit 'Read requests per minute' of service 'datacatalog.googleapis.com' for consumer 'project_number:1111111111111'.","grpc_status":8}"

有关数据目录配额的详细信息,请转到:Data Catalog quota docs。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将多个地名格式化为单个名称   java如何打印请求对象的属性和值?   java JPA空指针异常   Java:使用ObjectOutputStream编写对象时应该使用什么文件扩展名   java使JFrame可滚动   java在Eclipse插件中打开一个新窗口   java ReactFX使用者侦听多个EventStream   JFrame Swing/AWT中的java映像   java如何利用appium中关注的元素。无法在appium中选择下拉列表的值   java Hibernate lazyload应用程序设计   java如何在没有源的情况下对邻接矩阵进行拓扑排序?   java代码名一个字符串拆分   java RecyclerView在特定位置获取视图   python在Django中执行java应用程序(.jar)   使用PayPal Java完成支付过程,并获取其是否成功完成的状态