原始脚本

sqoop import \

--connect jdbc:mysql://你自己的IP地址:端口号/xxl_job \

--username 你自己的MySQL数据库账户 \

--password 密码 \

--query "SELECT id,username,password,role,permission,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as sys_update_time FROM xxl_job_log" \

--split-by mercode \

--null-string '\\N' \

--null-non-string '\\N' \

--hcatalog-database ods \

--hcatalog-table xxl_job_log_a \

--hcatalog-partition-keys ss_dt \

--hcatalog-partition-values "20230919" \

--hcatalog-storage-stanza 'stored as orc'

改写后

# hive 分区导入 成功

sqoop import \

--connect jdbc:mysql://192.168.58.202:3306/xxl_job \ #mysql连接的url

--driver com.mysql.jdbc.Driver \ #使用mysql的驱动

--username root \

--password Mysql123! \

--query "SELECT id,username,password,role,permission,date_format(sysdate(), '%y.%m.%d %h:%i:%s') as sys_update_time FROM xxl_job_user where \$CONDITIONS" \ #使用sql语句导入,必须有where中的\$CONDITIONS" ,还要注意mysql和Oracle中的日期处理

--hive-import \ #指定导入到hive里去

--hive-database ods \ #导入的hive数据源

--hive-table xxl_job_user_a \ #导入的hive表

--target-dir /user/hive/warehouse/ods.db/xxl_job_user_a \ #必须指定目标路径

--hive-partition-key 'ss_dt' \ #分区字段,这个不写入建表语句中

--hive-partition-value '2023-09-19' \ #分区的值

--fields-terminated-by "," \ #分隔符,默认"\001",可以"\t",可以","

-m 1 #设置mapper的数量为1 或者写成 --num-mappers 1

可以在hdfs上查看到数据: 点进去是这样的:

然后去hive的命令行,建表,它会自动映射:

创建hive表格来映射数据字段:

# hive建表

CREATE TABLE IF NOT EXISTS ods.xxl_job_user_a(

id BIGINT,

username STRING,

password STRING,

role STRING,

permission STRING,

sys_update_time TIMESTAMP

)

PARTITIONED BY ( ss_dt STRING )

row format delimited

fields terminated by ','

STORED AS ORC;

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: