尝试将数据加载到配置单元表时出错

时间:2015-01-19 14:24:52

标签: hadoop hive hbase

我能够使用hive创建一个进入hbase的表现在我正在尝试将数据加载到hive表中,然后将数据覆盖到hbase表中:

public class HiveJdbcClient {
    private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
    /**
    * @param args
    * @throws SQLException
    **/
    public static void main(String[] args) throws SQLException {
        try {
            Class.forName(driverName);
        } catch (ClassNotFoundException e){
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.exit(1);
        }



        Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/default", "", "");
        Statement stmt = con.createStatement();
        String tableNameHive = "hbase_trades";
        String tableNameHbase= "trades";

        stmt.executeQuery("drop table " + tableNameHive);
        ResultSet res = stmt.executeQuery("create table " + tableNameHive + " (key string, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES (\"hbase.columns.mapping\" = \":key,cf1:val\") TBLPROPERTIES (\"hbase.table.name\" = \"trades\")");


        String sql = "show tables '" + tableNameHive + "'";
        System.out.println("Running: " + sql);
        res = stmt.executeQuery(sql);
        if (res.next()) {
            System.out.println(res.getString(1));
        }


        sql = "describe " + tableNameHive;
        System.out.println("Running: " + sql);  
        res = stmt.executeQuery(sql);
        while (res.next()) {
        System.out.println(res.getString(1) + "\t" + res.getString(2));
        }


        String filepath = "/tmp/test_hive_server.txt";
        sql = "load data local inpath '" + filepath + "' into table " + tableNameHive;
        System.out.println("Running: " + sql);
        res = stmt.executeQuery(sql);





        stmt.executeQuery("insert overwrite " + tableNameHbase+"select * from"+tableNameHive);



    }
}

我收到以下错误:

Running: load data local inpath '/tmp/test_hive_server.txt' into table hbase_trades
Exception in thread "main" java.sql.SQLException: Query returned non-zero code: 10101, cause: FAILED: SemanticException [Error 10101]: A non-native table cannot be used as target for LOAD
    at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:194)
    at com.palmyra.nosql.HiveJdbcClient.main(HiveJdbcClient.java:53)

有人可以告诉我这是什么问题吗?

0 个答案:

没有答案