Hadoop Cloudera-导入时Sqoop codegen自定义ORM类
我是Cloudera环境的新手,我正在尝试使用从RDBMS导入数据,并且需要在导入过程中对数据应用一些转换。具体来说,我需要在将某些字段存储到Hadoop DFS之前对其进行加密。为了实现这一点,我尝试使用命令,该命令生成一个我可以修改的ORMJava类 假设我在MySQL数据库上有一个表'products',我想使用Sqoop在HDFS上导入它并加密'brand'字段。 首先,我运行了以下命令:Hadoop Cloudera-导入时Sqoop codegen自定义ORM类,hadoop,orm,cloudera,sqoop,codegen,Hadoop,Orm,Cloudera,Sqoop,Codegen,我是Cloudera环境的新手,我正在尝试使用从RDBMS导入数据,并且需要在导入过程中对数据应用一些转换。具体来说,我需要在将某些字段存储到Hadoop DFS之前对其进行加密。为了实现这一点,我尝试使用命令,该命令生成一个我可以修改的ORMJava类 假设我在MySQL数据库上有一个表'products',我想使用Sqoop在HDFS上导入它并加密'brand'字段。 首先,我运行了以下命令: sqoop codegen \ --connect jdbc:mysql://localhost
sqoop codegen \
--connect jdbc:mysql://localhost/test \
--username username --password password \
--table products
这将在/tmp/sqoop training/compile/fc8868dda33ef703ad126583cf77477f文件夹中生成文件products.java、products.jar和products.class
现在我修改了products.java中的readFields方法,如下所示:
我有两个问题:1)如何重新编译products.java以获得products.class和products.jar的更新版本?我已经试过了
javac products.java
但JVM给出了82个错误,似乎无法从hadoop和cloudera命名空间中找到包:
error: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.BytesWritable;
^
products.java:8: error: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.Text;
^
products.java:9: error: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.Writable;
^
products.java:10: error: package org.apache.hadoop.mapred.lib.db does not exist
import org.apache.hadoop.mapred.lib.db.DBWritable;
^
products.java:11: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.JdbcWritableBridge;
^
products.java:12: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.DelimiterSet;
^
products.java:13: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.FieldFormatter;
^
products.java:14: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.RecordParser;
^
products.java:15: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.BooleanParser;
^
products.java:16: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.BlobRef;
^
products.java:17: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.ClobRef;
^
products.java:18: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.LargeObjectLoader;
^
products.java:19: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.SqoopRecord;
2)成功编译products.java后,如何使用Sqoop使用自定义ORM类导入HDFS上的数据?
提前谢谢 关于第一个问题: 加 然后再试一次
附言:一般来说,在体系结构方面,对“在将某些字段存储到Hadoop DFS之前,我需要对其进行加密”进行一些小评论——为什么不使用HDFS透明加密?无需任何编码即可实现相同的功能。谢谢!不幸的是/opt/cloudera/parcels/CDH/lib/sqoop文件夹不存在。我只能看到/opt/cloudera/parcels/CDH/lib/hue文件夹。在终端上运行命令“hadoop版本”,我可以看到CDH版本是:cdh5.8.0。您是否安装了sqoop 1或sqoop 2?它是作为包裹或包裹安装的?您是否通过CM添加了SQOOP1服务?
error: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.BytesWritable;
^
products.java:8: error: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.Text;
^
products.java:9: error: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.Writable;
^
products.java:10: error: package org.apache.hadoop.mapred.lib.db does not exist
import org.apache.hadoop.mapred.lib.db.DBWritable;
^
products.java:11: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.JdbcWritableBridge;
^
products.java:12: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.DelimiterSet;
^
products.java:13: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.FieldFormatter;
^
products.java:14: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.RecordParser;
^
products.java:15: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.BooleanParser;
^
products.java:16: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.BlobRef;
^
products.java:17: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.ClobRef;
^
products.java:18: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.LargeObjectLoader;
^
products.java:19: error: package com.cloudera.sqoop.lib does not exist
import com.cloudera.sqoop.lib.SqoopRecord;
export CLASSPATH=`hadoop classpath`:/opt/cloudera/parcels/CDH/lib/sqoop/lib