2014-11-03 4 views
0

привет, я пытаюсь сделать этот пример hcatalog по следующей ссылке.Hcatalog hive issue java.lang.IllegalArgumentException: URI: не имеет схемы

http://www.cloudera.com/content/cloudera/en/documentation/cdh4/v4-2-0/CDH4-Installation-Guide/cdh4ig_topic_19_6.html

я получаю следующее исключение, когда я выполнить задание.

java.lang.IllegalArgumentException: URI: не имеет схему

Java класс:

import java.io.IOException; 
import java.util.*; 

import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.conf.*; 
import org.apache.hadoop.io.*; 
import org.apache.hadoop.mapreduce.*; 
import org.apache.hadoop.util.*; 
import org.apache.hcatalog.common.*; 
import org.apache.hcatalog.mapreduce.*; 
import org.apache.hcatalog.data.*; 
import org.apache.hcatalog.data.schema.*; 
import org.apache.hadoop.util.GenericOptionsParser; 
//import org.apache.commons.cli.Options; 

public class UseHCat extends Configured implements Tool { 

    public static class Map extends Mapper<WritableComparable, HCatRecord, Text, IntWritable> { 
     String groupname; 

     @Override 
     protected void map(WritableComparable key, 
          HCatRecord value, 
          org.apache.hadoop.mapreduce.Mapper<WritableComparable, HCatRecord, 
          Text, IntWritable>.Context context) 
      throws IOException, InterruptedException { 
      // The group table from /etc/group has name, 'x', id 
      groupname = (String) value.get(0); 
      int id = (Integer) value.get(2); 
      // Just select and emit the name and ID 
      context.write(new Text(groupname), new IntWritable(id)); 
     } 
    } 

    public static class Reduce extends Reducer<Text, IntWritable, 
             WritableComparable, HCatRecord> { 

     protected void reduce(Text key, 
           java.lang.Iterable<IntWritable> values, 
           org.apache.hadoop.mapreduce.Reducer<Text, IntWritable, 
           WritableComparable, HCatRecord>.Context context) 
      throws IOException, InterruptedException { 
      // Only expecting one ID per group name 
      Iterator<IntWritable> iter = values.iterator(); 
      IntWritable iw = iter.next(); 
      int id = iw.get(); 
      // Emit the group name and ID as a record 
      HCatRecord record = new DefaultHCatRecord(2); 
      record.set(0, key.toString()); 
      record.set(1, id); 
      context.write(null, record); 
     } 
    } 

    @SuppressWarnings("deprecation") 
    public int run(String[] args) throws Exception { 
     Configuration conf = getConf(); 
     args = new GenericOptionsParser(conf, args).getRemainingArgs(); 

     // Get the input and output table names as arguments 
     String inputTableName = args[0]; 
     String outputTableName = args[1]; 
     // Assume the default database 
     String dbName = "hadooppracticedb"; 

     Job job = new Job(conf, "UseHCat"); 
     HCatInputFormat.setInput(job, InputJobInfo.create(dbName, 
       inputTableName, null)); 
     job.setJarByClass(UseHCat.class); 
     job.setMapperClass(Map.class); 
     job.setReducerClass(Reduce.class); 

     // An HCatalog record as input 
     job.setInputFormatClass(HCatInputFormat.class); 

     // Mapper emits a string as key and an integer as value 
     job.setMapOutputKeyClass(Text.class); 
     job.setMapOutputValueClass(IntWritable.class); 

     // Ignore the key for the reducer output; emitting an HCatalog record as value 
     job.setOutputKeyClass(WritableComparable.class); 
     job.setOutputValueClass(DefaultHCatRecord.class); 
     job.setOutputFormatClass(HCatOutputFormat.class); 

     HCatOutputFormat.setOutput(job, OutputJobInfo.create(dbName, 
        outputTableName, null)); 
     HCatSchema s = HCatOutputFormat.getTableSchema(job); 
     System.err.println("INFO: output schema explicitly set for writing:" + s); 
     HCatOutputFormat.setSchema(job, s); 
     return (job.waitForCompletion(true) ? 0 : 1); 
    } 

    public static void main(String[] args) throws Exception { 
     int exitCode = ToolRunner.run(new UseHCat(), args); 
     System.exit(exitCode); 
    } 
} 

получает исключение в этой линии

HCatInputFormat.setInput(job, InputJobInfo.create(dbName, 
      inputTableName, null)); 

команда Hadoop баночка:

hadoop jar Hcat.jar com.otsi.hcat.UseHCat -files $ HCATJAR -libjars $ {LIBJ ARS} группы groupids

я установил следующее свойство в улье-site.xml

улого-site.xml:

<property> 
     <name>hive.metastore.uris</name> 
     <value>thrift://localhost:9083</value> 
    </property> 

я создал 2 таблицы групп groupids в "hadooppracticedb". .

, пожалуйста, предложите.

ответ

0

Вы не указали местонахождение metastore local property?

Вы должны установить свойство hive.metastore.uris, если вы используете автономный сервер MetaStore, и в этом случае вам нужно установить hive.metastore.local = false и установить hive.metastore.uris в URI Thrift.

Пожалуйста, смотрите этот документ для получения более подробной информации:

https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin

+0

Привет, Я использую улей-0.13.0..hive.metastore.uris Hive подключается к одному из этих URI, чтобы сделать запросы метаданных для удаленный метастор (список разделенных запятыми URI) hive.metastore.local локальный или удаленный метастор (удалено с улей 0.10: если hive.metastore.uris пуст, то используется локальный режим, удаленный в противном случае .. и im запускает этот пример на кластере из 2 узлов. – user1217694

+0

hive-site.xml; улей. metastore.uris бережливость: // имяNode: 9083 user1217694