载入数据
使用命令行加载csv数据
- 使用Hbase Shell创建一个表gdp,列族有info.
create 'gdp','info'
或者使用JAVA API创建表单,配置就不写了
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import java.io.IOException;
import java.net.URISyntaxException;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.Filter;
public class HelloHBase {
public static void main( String[] args ) throws URISyntaxException, IOException
{
Configuration config=HBaseConfiguration.create();
config.addResource(
new Path(ClassLoader.getSystemResource("hbase-site.xml").toURI()));
config.addResource(
new Path(ClassLoader.getSystemResource("core-site.xml").toURI()));
Connection connection=ConnectionFactory.createConnection(config);
TableName tableName=TableName.valueOf("gdp");
HTableDescriptor table=new HTableDescriptor(tableName);
HColumnDescriptor mycf = new HColumnDescriptor("info");
table.addFamily(new HColumnDescriptor(mycf));
Admin admin=connection.getAdmin();
admin.createTable(table);
admin.close();
connection.close();
}
}
- 把当前目录下文件传入HDFS /input/目录中中
hadoop@Master:~/test/hbase$ hdfs dfs -put gdp.csv /input/
- 使用如下命令将数据从hdfs加载至表单中.
前面一半表示用逗号分隔,后面columns 表示将csv数据的每一列划分为列族中的列.这里我使用了省份作为Row_key,由于数据小,且联系密切,就把它们都放到了一个列族中.
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=',' -Dimporttsv.columns=HBASE_ROW_KEY,info:date,info:number gdp /input/gdp.csv
下面是shell描述
可以从Hue看到数据的格式。