用于将配置单元元数据摄取到Google云数据目录中的库
google-datacatalog-hive-connector的Python项目详细描述
google datacatalog配置单元连接器
用于将配置单元元数据摄取到Google云数据目录中的库。 您可以直接连接到配置单元元存储或使用cloudrun使用消息事件。在
此连接器已准备好与Hive Metastore 2.3.0版本配合使用, 由PostgreSQL或MySQL数据库支持。在
免责声明:这不是官方支持的谷歌产品。
目录
- 1. Installation 在
- 2. Environment setup 在
- 3. Run entry point 在
- 4. Deploy Message Event Consumer on Cloud Run (Optional) 在
- 5. Tools (Optional) 在
- 6. Developer environment 在
- 7. Metrics
- 8. Connector Architecture
- 9. Troubleshooting
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。指标
8。连接器体系结构
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。在
- 项目
标签: