4

Hadoop 1.0.4、cassandra 1.2.2、および pig 0.11.0 を使用しています。

私はうなり声でこのスクリプトを実行したい:

**grunt> rows = LOAD 'cassandra://Keyspace1/Users' USING CassandraStorage() AS (key, columns: bag {T: tuple(name, value)});**

しかし、私はこのエラーが発生しています:

**2013-03-19 11:15:54,957 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve CassandraStorage using imports: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.]**

ログファイルには次が含まれます:

豚のスタック トレース

エラー 1070: インポートを使用して CassandraStorage を解決できませんでした: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.]

解析に失敗しました: Pig スクリプトの解析に失敗しました: Pig スクリプトの検証に失敗しました: org.apache.pig.backend.executionengine.ExecException: エラー 1070: インポートを使用して CassandraStorage を解決できませんでした: [, org.apache.pig.builtin., org .apache.pig.impl.builtin.] org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:191) org.apache.pig.PigServer$Graph.validateQuery(PigServer.java:1571) .apache.pig.PigServer$Graph.registerQuery(PigServer.java:1544) org.apache.pig.PigServer.registerQuery(PigServer.java:516) org.apache.pig.tools.grunt.GruntParser.processPig(GruntParser) .java:991) で org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:412) で org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:194) でorg.apache.pig.tools.grunt.GruntParser.org.apache.pig.tools.grunt.Grunt.run(Grunt.java:69) の parseStopOnError(GruntParser.java:170) org.apache.pig.Main.run(Main.java:538) の org.apache .pig.Main.main(Main.java:157) 原因: pig スクリプトが検証に失敗しました: org.apache.pig.backend.executionengine.ExecException: エラー 1070: インポートを使用して CassandraStorage を解決できませんでした: [, org.apache. org.apache.pig.parser.LogicalPlanBuilder.buildFuncSpec(LogicalPlanBuilder. java:1194) org.apache.pig.parser.LogicalPlanGenerator.func_clause(LogicalPlanGenerator.java:4766) で org.apache.pig.parser.LogicalPlanGenerator.load_clause(LogicalPlanGenerator.java:3183) で org.apache.pig.parser .LogicalPlanGenerator.op_clause(LogicalPlanGenerator.java:1315) org.apache.pig.parser.LogicalPlanGenerator.general_statement(LogicalPlanGenerator.java:799) org.apache.pig.parser.LogicalPlanGenerator.statement(LogicalPlanGenerator.java:517) org.apache .pig.parser.LogicalPlanGenerator.query(LogicalPlanGenerator.java:392) at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:184) ... 10 以上原因: org.apache.pig.backend. executionengine.ExecException: エラー 1070: インポートを使用して CassandraStorage を解決できませんでした: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.] at org.apache.pig.impl.PigContext.resolveClassName(PigContext .java:523) org.apache.pig.parser.LogicalPlanBuilder.validateFuncSpec (LogicalPlanBuilder.java:1206) でgeneral_statement(LogicalPlanGenerator.java:799) org.apache.pig.parser.LogicalPlanGenerator.statement(LogicalPlanGenerator.java:517) org.apache.pig.parser.LogicalPlanGenerator.query(LogicalPlanGenerator.java:392) org.apache .pig.parser.QueryParserDriver.parse(QueryParserDriver.java:184) ... 10 以上原因: org.apache.pig.backend.executionengine.ExecException: エラー 1070: インポートを使用して CassandraStorage を解決できませんでした: [, org.apache .pig.builtin., org.apache.pig.impl.builtin.] org.apache.pig.impl.PigContext.resolveClassName(PigContext.java:523) で org.apache.pig.parser.LogicalPlanBuilder.validateFuncSpec(LogicalPlanBuilder) .java:1206)general_statement(LogicalPlanGenerator.java:799) org.apache.pig.parser.LogicalPlanGenerator.statement(LogicalPlanGenerator.java:517) org.apache.pig.parser.LogicalPlanGenerator.query(LogicalPlanGenerator.java:392) org.apache .pig.parser.QueryParserDriver.parse(QueryParserDriver.java:184) ... 10 以上原因: org.apache.pig.backend.executionengine.ExecException: エラー 1070: インポートを使用して CassandraStorage を解決できませんでした: [, org.apache .pig.builtin., org.apache.pig.impl.builtin.] org.apache.pig.impl.PigContext.resolveClassName(PigContext.java:523) で org.apache.pig.parser.LogicalPlanBuilder.validateFuncSpec(LogicalPlanBuilder) .java:1206)query(LogicalPlanGenerator.java:392) at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:184) ... 10 以上原因: org.apache.pig.backend.executionengine.ExecException: エラー 1070:インポートを使用して CassandraStorage を解決できませんでした: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.] at org.apache.pig.impl.PigContext.resolveClassName(PigContext.java:523) at org .apache.pig.parser.LogicalPlanBuilder.validateFuncSpec(LogicalPlanBuilder.java:1206)query(LogicalPlanGenerator.java:392) at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:184) ... 10 以上原因: org.apache.pig.backend.executionengine.ExecException: エラー 1070:インポートを使用して CassandraStorage を解決できませんでした: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.] at org.apache.pig.impl.PigContext.resolveClassName(PigContext.java:523) at org .apache.pig.parser.LogicalPlanBuilder.validateFuncSpec(LogicalPlanBuilder.java:1206)java:523) org.apache.pig.parser.LogicalPlanBuilder.validateFuncSpec (LogicalPlanBuilder.java:1206) でjava:523) org.apache.pig.parser.LogicalPlanBuilder.validateFuncSpec (LogicalPlanBuilder.java:1206) で

... 18以上

ありがとう。

4

3 に答える 3

4

Pygmalionプロジェクトのドキュメントとpig_cassandraスクリプトのソースに基づいて、次の手順を実行して Cassandra と Pig 間の接続を確立できます。

for jar in $CASSANDRA_HOME/lib/*.jar; do CLASSPATH=$CLASSPATH:$jar; done;
export PIG_CLASSPATH=$PIG_CLASSPATH:$CLASSPATH;
export PIG_OPTS="$PIG_OPTS -Dudf.import.list=org.apache.cassandra.hadoop.pig";
export PIG_INITIAL_ADDRESS=localhost;
export PIG_RPC_PORT=9160;
export PIG_PARTITIONER=org.apache.cassandra.dht.RandomPartitioner;
pig

また、Cassandra jar も必ず含めてHADOOP_CLASSPATHください (例: hadoop-env.sh に設定します)。

于 2013-03-19T13:33:09.827 に答える
2

これは間違いなく PIG_CLASSPATH の問題です。cassandra ソース配布物に付属の examples/pig/bin ディレクトリから pig_cassandra を実行する必要があります。このスクリプトは、pig を実行する前にクラスパスを構築します。

次の環境変数も設定する必要があります。

export JAVA_HOME=Oracle java 6 dir
export PIG_HOME=pig directory
export PIG_CONF_DIR=hadoop conf directory(needed if running distributed mapreduce)
export PIG_INITIAL_ADDRESS=ip of a cassandra node
export PIG_RPC_PORT=cassandra RPC port (i.e. 9160)
export PIG_PARTITIONER=org.apache.cassandra.dht.RandomPartitioner

注: pig_cassandra を実行する前に、ant を使用して cassandra ソースをビルドする必要があります。これにより、pig_cassandra スクリプトが必要とする cassandra_source/build/lib/jars フォルダーにいくつかのライブラリが生成されます。そうしないと、pig の起動時にエラーが発生します。エラーが正確に何であったか思い出せません。これは、pig 内のシリアライゼーション/デシリアライゼーション段階で見つからなかったメソッドに沿ったものでした。

于 2013-03-28T07:23:55.817 に答える
0

私はこれを行うことで解決しました

register hdfs:/udf/cassandra-all.jar;
define CqlStorage org.apache.cassandra.hadoop.pig.CqlNativeStorage();
于 2015-09-23T07:12:21.200 に答える