出于自学的目的,我尝试在google云中创建一个端到端的数据流:
1.使用cloud sql创建mysql表2.使用dataproc创建临时集群,使用template运行sqoop作业。3.将从存储桶中提取的数据放入bq中。
我一直在通过sqoop访问mysql表。
ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: Access denied for user 'test'@'localhost' (using password: YES)
java.sql.SQLException: Access denied for user 'test'@'localhost' (using password: YES).
我试图解决这个问题:1.用公共ip替换本地主机。2.执行
GRANT ALL ON everlytics.* TO test@'<ip>' IDENTIFIED BY '1234';
flush privileges;
我的代码片段如下:
gcloud dataproc workflow-templates set-managed-cluster $template_name --zone "asia-south1-a" \
--cluster-name=$cluster_name \
--region "asia-south1" \
--scopes=default,sql-admin \
--initialization-actions=gs://dataproc-initialization-actions/cloud-sql-proxy/cloud-sql-proxy.sh \
--properties=hive:hive.metastore.warehouse.dir=$bucket/hive-warehouse \
--metadata=enable-cloud-sql-hive-metastore=false \
--metadata=additional-cloud-sql-instances=$instance_name=tcp:3306 \
--master-machine-type n1-standard-1 \
--master-boot-disk-size 20 \
--num-workers 2 \
--worker-machine-type n1-standard-2 \
--worker-boot-disk-size 20 \
--image-version 1.2 &&
gcloud dataproc workflow-templates add-job hadoop \
--step-id=customers_564456778 \
--region="asia-south1" \
--workflow-template=$template_name \
--class=org.apache.sqoop.Sqoop \
--jars=$bucket/sqoop-1.4.7-hadoop260.jar,$bucket/avro-tools-1.8.2.jar,$bucket/mysql-connector-java-5.1.48.jar \
-- import -Dmapreduce.job.user.classpath.first=true \
--driver com.mysql.jdbc.Driver \
--username=test \
--password=1234 \
--query "select * from everlytics.customers where customerNumber>0 and \$CONDITIONS" \
--target-dir $bucket/$table_name \
--split-by customerNumber -m 2
mysql 5.6版
请告知我做得是否正确。
1条答案
按热度按时间x33g5p2x1#
可能是配置问题。。。
在cloud sql 1)gcloud sql connect[cloud sql instnace name]--user=root中运行以下命令进行验证
确保在云sql示例的连接列表中添加了机器ip地址。