[HADOOP] Apache Sqoop을 사용하여 Mongo / Cassandra에서 HDFS로 데이터 내보내기
HADOOPApache Sqoop을 사용하여 Mongo / Cassandra에서 HDFS로 데이터 내보내기
여러 데이터 소스, 즉 RDBMS (MYSQL, Oracle) 및 NOSQL (MongoDb, Cassandra)에서 Hive를 통해 HDFS로 데이터를 읽어야하는 문제가 있습니다 (증분).
Apache Sqoop은 RDBMS에서 완벽하게 작동하지만 NOSQL에서는 작동하지 않습니다. 최소한 성공적으로 사용할 수 없었습니다 (Mongo에 JDBC 드라이버를 사용하려고했습니다 ... Mongo에 연결할 수는 있었지만 푸시 할 수 없었습니다 HDFS로)
누구든지 이와 관련된 작업을 수행하고 공유 할 수 있다면 정말 도움이 될 것입니다.
해결법
-
==============================
1.웹에서 예제를 사용하여 Mongo에서 HDFS로 파일을 전송할 수 있습니다. 나는 지금 정확한 웹 페이지를 스스로 모을 수 없었다. 그러나 프로그램은 아래와 같습니다.
웹에서 예제를 사용하여 Mongo에서 HDFS로 파일을 전송할 수 있습니다. 나는 지금 정확한 웹 페이지를 스스로 모을 수 없었다. 그러나 프로그램은 아래와 같습니다.
당신은 이것에서 불꽃을 얻을 수 있습니다.
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.bson.BSONObject; import org.bson.types.ObjectId; import com.mongodb.hadoop.MongoInputFormat; import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; import com.mongodb.hadoop.util.MongoConfigUtil; public class CopyFromMongodbToHDFS { public static class ImportWeblogsFromMongo extends Mapper<LongWritable, Text, Text, Text> { public void map(Object key, BSONObject value, Context context) throws IOException, InterruptedException { System.out.println("Key: " + key); System.out.println("Value: " + value); String md5 = value.get("md5").toString(); String url = value.get("url").toString(); String date = value.get("date").toString(); String time = value.get("time").toString(); String ip = value.get("ip").toString(); String output = "\t" + url + "\t" + date + "\t" + time + "\t" + ip; context.write(new Text(md5), new Text(output)); } } public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException { Configuration conf = new Configuration(); MongoConfigUtil.setInputURI(conf, "mongodb://127.0.0.1:27017/test.mylogs"); System.out.println("Configuration: " + conf); @SuppressWarnings("deprecation") Job job = new Job(conf, "Mongo Import"); Path out = new Path("/user/cloudera/test1/logs.txt"); FileOutputFormat.setOutputPath(job, out); job.setJarByClass(CopyFromMongodbToHDFS.class); job.setMapperClass(ImportWeblogsFromMongo.class); job.setOutputKeyClass(ObjectId.class); job.setOutputValueClass(BSONObject.class); job.setInputFormatClass(MongoInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); job.setNumReduceTasks(0); System.exit(job.waitForCompletion(true) ? 0 : 1); } }
-
==============================
2.mongoDB의 경우 HDFS로 내보낼 컬렉션의 mongodump를 만듭니다.
mongoDB의 경우 HDFS로 내보낼 컬렉션의 mongodump를 만듭니다.
덤프는 .bson 형식입니다 (예 : "file.bson"). .json 형식으로 변환합니다. file.bson은 기본적으로 지정된
의 "dump"폴더에 저장됩니다. "copyFromLocal"을 사용하여 파일을 HDFS로 복사하십시오.
from https://stackoverflow.com/questions/25465899/exporting-data-from-mongo-cassandra-to-hdfs-using-apache-sqoop by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] java를 사용하는 Titan-1.0.0 + Hbase-0.98.20의 원격 모드에서 연결 오류 (0) | 2019.09.10 |
---|---|
[HADOOP] UserAgent 문자열에서 값을 제거하는 Java 또는 Pig 정규식 (0) | 2019.09.09 |
[HADOOP] 시스템 디렉토리를 가져 오지 못했습니다-hadoop (0) | 2019.09.09 |
[HADOOP] NodeManager에 대한 Windows 2008 R2 x64의 Hadoop 2.3.0 (0) | 2019.09.09 |
[HADOOP] 스파크는 YARN이 아닌 로컬에서 실행됩니다. (0) | 2019.09.09 |