使用java确定从HDFS准确加载到一个Hbase表中的文件?

时间:2016-07-14 13:52:46

标签: java hadoop hbase

我是Big Data和Hadoop的新成员。我正在学习Hadoop和Hbase。我遇到了问题,但仍然不知道。你能帮帮我吗?

我已将3个csv文件放入HDFS,包括:
- 文件1(Subscribe_info.txt):numID,active_date,状态
- 文件2(Recharge.txt):numID,recharge_history_date,金额,方法
- 文件3(Charge.txt):numID,charge_date,amount_charge

所有这些都通过以下方式相互关联:numID。

我需要将上面的所有数据加载到Hbase表中,行键是numID并包含所有相关的列,如下所示:

Hbase table: rowkey= userID -- Column: active_date - status - recharge_history - amount_recharge - method - charge - history - amount

我使用Java并且我已经创建了3个类来解析来自3个数据文件的数据。但我不知道如何从HDFS读取文件路径并解析它以将其放入Hbase表。

1 个答案:

答案 0 :(得分:2)

您的要求有以下步骤

1)您必须阅读HDFS文件(在您的情况下,您必须阅读csv文件,您可以使用https://github.com/request/request-promise/issues/137,我已经在下面给出了一个示例来阅读普通文件)

2)准备一个put并上传到HBASE

我已经提到过要执行此操作的代码Open CSV

import java.io.*;
import java.util.*;
import java.net.*;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.util.*;


public class Cat{
        public static void main (String [] args) throws Exception{
                try{
                        Path pt=new Path("hdfs://npvm11.np.wc1.yellowpages.com:9000/user/john/abc.txt");
                        FileSystem fs = FileSystem.get(new Configuration());
                        BufferedReader br=new BufferedReader(new InputStreamReader(fs.open(pt)));
                        String line;
                        line=br.readLine();
                        while (line != null){
                                System.out.println(line);
                                line=br.readLine();
                        }
                }catch(Exception e){
                }
        }
}

希望这会有所帮助..