Hadoop Cloudera-导入时Sqoop codegen自定义ORM类

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

我是Cloudera环境的新手,我正在尝试使用从RDBMS导入数据,并且需要在导入过程中对数据应用一些转换。具体来说,我需要在将某些字段存储到Hadoop DFS之前对其进行加密。为了实现这一点,我尝试使用命令,该命令生成一个我可以修改的ORMJava类

假设我在MySQL数据库上有一个表'products',我想使用Sqoop在HDFS上导入它并加密'brand'字段。 首先,我运行了以下命令:

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