Author: rvs
Date: Thu Nov 3 02:55:36 2011
New Revision: 1196924
URL: http://svn.apache.org/viewvc?rev=1196924&view=rev
Log:
Enabling Hive
Added:
incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/common/hive/patch
Modified:
incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/common/hive/do-component-build
incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/deb/hive/rules
incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/rpm/hive/SPECS/hive.spec
incubator/bigtop/branches/hadoop-0.23/bigtop.mk
Modified:
incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/common/hive/do-component-build
URL:
http://svn.apache.org/viewvc/incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/common/hive/do-component-build?rev=1196924&r1=1196923&r2=1196924&view=diff
==============================================================================
---
incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/common/hive/do-component-build
(original)
+++
incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/common/hive/do-component-build
Thu Nov 3 02:55:36 2011
@@ -15,5 +15,5 @@
# limitations under the License.
set -ex
-
-ant -f src/build.xml -Dhadoop.mirror=http://archive.cloudera.com/hive-deps
package "$@"
+# -f src/build.xml
+ant package "$@"
Added:
incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/common/hive/patch
URL:
http://svn.apache.org/viewvc/incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/common/hive/patch?rev=1196924&view=auto
==============================================================================
--- incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/common/hive/patch
(added)
+++ incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/common/hive/patch
Thu Nov 3 02:55:36 2011
@@ -0,0 +1,1016 @@
+diff --git build.properties build.properties
+index fc80b03..6247e4b 100644
+--- build.properties
++++ build.properties
+@@ -10,10 +10,10 @@ javac.deprecation=off
+ javac.args=
+ javac.args.warnings=
+
+-hadoop.version=0.20.1
+-hadoop.security.version=0.20.3-CDH3-SNAPSHOT
+-hadoop.mirror=http://mirror.facebook.net/facebook/hive-deps
+-hadoop.mirror2=http://archive.cloudera.com/hive-deps
++hadoop.version=0.23.0
++hadoop.security.version=0.23.0
++hadoop.mirror=http://people.apache.org/~rvs/
++hadoop.mirror2=http://people.apache.org/~rvs/
+
+ build.dir.hive=${hive.root}/build
+ build.dir.hadoop=${build.dir.hive}/hadoopcore
+diff --git shims/src/0.23/java/org/apache/hadoop/fs/ProxyFileSystem.java
shims/src/0.23/java/org/apache/hadoop/fs/ProxyFileSystem.java
+new file mode 100644
+index 0000000..218236f
+--- /dev/null
++++ shims/src/0.23/java/org/apache/hadoop/fs/ProxyFileSystem.java
+@@ -0,0 +1,273 @@
++/**
++ * Licensed to the Apache Software Foundation (ASF) under one
++ * or more contributor license agreements. See the NOTICE file
++ * distributed with this work for additional information
++ * regarding copyright ownership. The ASF licenses this file
++ * to you under the Apache License, Version 2.0 (the
++ * "License"); you may not use this file except in compliance
++ * with the License. You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++
++package org.apache.hadoop.fs;
++
++import java.io.IOException;
++import java.net.URI;
++import java.net.URISyntaxException;
++
++import org.apache.hadoop.conf.Configuration;
++import org.apache.hadoop.fs.permission.FsPermission;
++import org.apache.hadoop.util.Progressable;
++
++/****************************************************************
++ * A FileSystem that can serve a given scheme/authority using some
++ * other file system. In that sense, it serves as a proxy for the
++ * real/underlying file system
++ *****************************************************************/
++
++public class ProxyFileSystem extends FilterFileSystem {
++
++ protected String myScheme;
++ protected String myAuthority;
++ protected URI myUri;
++
++ protected String realScheme;
++ protected String realAuthority;
++ protected URI realUri;
++
++
++
++ private Path swizzleParamPath(Path p) {
++ return new Path (realScheme, realAuthority, p.toUri().getPath());
++ }
++
++ private Path swizzleReturnPath(Path p) {
++ return new Path (myScheme, myAuthority, p.toUri().getPath());
++ }
++
++ private FileStatus swizzleFileStatus(FileStatus orig, boolean isParam) {
++ FileStatus ret =
++ new FileStatus(orig.getLen(), orig.isDir(), orig.getReplication(),
++ orig.getBlockSize(), orig.getModificationTime(),
++ orig.getAccessTime(), orig.getPermission(),
++ orig.getOwner(), orig.getGroup(),
++ isParam ? swizzleParamPath(orig.getPath()) :
++ swizzleReturnPath(orig.getPath()));
++ return ret;
++ }
++
++ public ProxyFileSystem() {
++ throw new RuntimeException ("Unsupported constructor");
++ }
++
++ public ProxyFileSystem(FileSystem fs) {
++ throw new RuntimeException ("Unsupported constructor");
++ }
++
++ /**
++ * Create a proxy file system for fs.
++ *
++ * @param fs FileSystem to create proxy for
++ * @param myUri URI to use as proxy. Only the scheme and authority from
++ * this are used right now
++ */
++ public ProxyFileSystem(FileSystem fs, URI myUri) {
++ super(fs);
++
++ URI realUri = fs.getUri();
++ this.realScheme = realUri.getScheme();
++ this.realAuthority=realUri.getAuthority();
++ this.realUri = realUri;
++
++ this.myScheme = myUri.getScheme();
++ this.myAuthority=myUri.getAuthority();
++ this.myUri = myUri;
++ }
++
++ @Override
++ public void initialize(URI name, Configuration conf) throws IOException {
++ try {
++ URI realUri = new URI (realScheme, realAuthority,
++ name.getPath(), name.getQuery(),
name.getFragment());
++ super.initialize(realUri, conf);
++ } catch (URISyntaxException e) {
++ throw new RuntimeException(e);
++ }
++ }
++
++ @Override
++ public URI getUri() {
++ return myUri;
++ }
++
++ @Override
++ public String getName() {
++ return getUri().toString();
++ }
++
++ @Override
++ public Path makeQualified(Path path) {
++ return swizzleReturnPath(super.makeQualified(swizzleParamPath(path)));
++ }
++
++
++ @Override
++ protected void checkPath(Path path) {
++ super.checkPath(swizzleParamPath(path));
++ }
++
++ @Override
++ public BlockLocation[] getFileBlockLocations(FileStatus file, long start,
++ long len) throws IOException {
++ return super.getFileBlockLocations(swizzleFileStatus(file, true),
++ start, len);
++ }
++
++ @Override
++ public FSDataInputStream open(Path f, int bufferSize) throws IOException {
++ return super.open(swizzleParamPath(f), bufferSize);
++ }
++
++ @Override
++ public FSDataOutputStream append(Path f, int bufferSize,
++ Progressable progress) throws IOException {
++ return super.append(swizzleParamPath(f), bufferSize, progress);
++ }
++
++ @Override
++ public FSDataOutputStream create(Path f, FsPermission permission,
++ boolean overwrite, int bufferSize, short replication, long blockSize,
++ Progressable progress) throws IOException {
++ return super.create(swizzleParamPath(f), permission,
++ overwrite, bufferSize, replication, blockSize, progress);
++ }
++
++ @Override
++ public boolean setReplication(Path src, short replication) throws
IOException {
++ return super.setReplication(swizzleParamPath(src), replication);
++ }
++
++ @Override
++ public boolean rename(Path src, Path dst) throws IOException {
++ return super.rename(swizzleParamPath(src), swizzleParamPath(dst));
++ }
++
++ @Override
++ public boolean delete(Path f, boolean recursive) throws IOException {
++ return super.delete(swizzleParamPath(f), recursive);
++ }
++
++ @Override
++ public boolean deleteOnExit(Path f) throws IOException {
++ return super.deleteOnExit(swizzleParamPath(f));
++ }
++
++ @Override
++ public FileStatus[] listStatus(Path f) throws IOException {
++ FileStatus[] orig = super.listStatus(swizzleParamPath(f));
++ FileStatus[] ret = new FileStatus [orig.length];
++ for (int i=0; i<orig.length; i++) {
++ ret[i] = swizzleFileStatus(orig[i], false);
++ }
++ return ret;
++ }
++
++ @Override
++ public Path getHomeDirectory() {
++ return swizzleReturnPath(super.getHomeDirectory());
++ }
++
++ @Override
++ public void setWorkingDirectory(Path newDir) {
++ super.setWorkingDirectory(swizzleParamPath(newDir));
++ }
++
++ @Override
++ public Path getWorkingDirectory() {
++ return swizzleReturnPath(super.getWorkingDirectory());
++ }
++
++ @Override
++ public boolean mkdirs(Path f, FsPermission permission) throws IOException {
++ return super.mkdirs(swizzleParamPath(f), permission);
++ }
++
++ @Override
++ public void copyFromLocalFile(boolean delSrc, Path src, Path dst)
++ throws IOException {
++ super.copyFromLocalFile(delSrc, swizzleParamPath(src),
swizzleParamPath(dst));
++ }
++
++ @Override
++ public void copyFromLocalFile(boolean delSrc, boolean overwrite,
++ Path[] srcs, Path dst)
++ throws IOException {
++ super.copyFromLocalFile(delSrc, overwrite, srcs, swizzleParamPath(dst));
++ }
++
++ @Override
++ public void copyFromLocalFile(boolean delSrc, boolean overwrite,
++ Path src, Path dst)
++ throws IOException {
++ super.copyFromLocalFile(delSrc, overwrite, src, swizzleParamPath(dst));
++ }
++
++ @Override
++ public void copyToLocalFile(boolean delSrc, Path src, Path dst)
++ throws IOException {
++ super.copyToLocalFile(delSrc, swizzleParamPath(src), dst);
++ }
++
++ @Override
++ public Path startLocalOutput(Path fsOutputFile, Path tmpLocalFile)
++ throws IOException {
++ return super.startLocalOutput(swizzleParamPath(fsOutputFile),
tmpLocalFile);
++ }
++
++ @Override
++ public void completeLocalOutput(Path fsOutputFile, Path tmpLocalFile)
++ throws IOException {
++ super.completeLocalOutput(swizzleParamPath(fsOutputFile), tmpLocalFile);
++ }
++
++ @Override
++ public ContentSummary getContentSummary(Path f) throws IOException {
++ return super.getContentSummary(swizzleParamPath(f));
++ }
++
++ @Override
++ public FileStatus getFileStatus(Path f) throws IOException {
++ return swizzleFileStatus(super.getFileStatus(swizzleParamPath(f)), false);
++ }
++
++ @Override
++ public FileChecksum getFileChecksum(Path f) throws IOException {
++ return super.getFileChecksum(swizzleParamPath(f));
++ }
++
++ @Override
++ public void setOwner(Path p, String username, String groupname
++ ) throws IOException {
++ super.setOwner(swizzleParamPath(p), username, groupname);
++ }
++
++ @Override
++ public void setTimes(Path p, long mtime, long atime
++ ) throws IOException {
++ super.setTimes(swizzleParamPath(p), mtime, atime);
++ }
++
++ @Override
++ public void setPermission(Path p, FsPermission permission
++ ) throws IOException {
++ super.setPermission(swizzleParamPath(p), permission);
++ }
++}
++
+diff --git shims/src/0.23/java/org/apache/hadoop/fs/ProxyLocalFileSystem.java
shims/src/0.23/java/org/apache/hadoop/fs/ProxyLocalFileSystem.java
+new file mode 100644
+index 0000000..b28bf4e
+--- /dev/null
++++ shims/src/0.23/java/org/apache/hadoop/fs/ProxyLocalFileSystem.java
+@@ -0,0 +1,61 @@
++/**
++ * Licensed to the Apache Software Foundation (ASF) under one
++ * or more contributor license agreements. See the NOTICE file
++ * distributed with this work for additional information
++ * regarding copyright ownership. The ASF licenses this file
++ * to you under the Apache License, Version 2.0 (the
++ * "License"); you may not use this file except in compliance
++ * with the License. You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++
++package org.apache.hadoop.fs;
++
++import java.io.*;
++import java.net.URI;
++import java.net.URISyntaxException;
++
++import org.apache.hadoop.conf.Configuration;
++import org.apache.hadoop.fs.permission.FsPermission;
++import org.apache.hadoop.util.Progressable;
++
++/****************************************************************
++ * A Proxy for LocalFileSystem
++ *
++ * Serves uri's corresponding to 'pfile:///' namespace with using
++ * a LocalFileSystem
++ *****************************************************************/
++
++public class ProxyLocalFileSystem extends FilterFileSystem {
++
++ protected LocalFileSystem localFs;
++
++ public ProxyLocalFileSystem() {
++ localFs = new LocalFileSystem();
++ }
++
++ public ProxyLocalFileSystem(FileSystem fs) {
++ throw new RuntimeException ("Unsupported Constructor");
++ }
++
++ @Override
++ public void initialize(URI name, Configuration conf) throws IOException {
++ // create a proxy for the local filesystem
++ // the scheme/authority serving as the proxy is derived
++ // from the supplied URI
++
++ String scheme = name.getScheme();
++ String authority = name.getAuthority() != null ? name.getAuthority() : "";
++ String proxyUriString = name + "://" + authority + "/";
++ fs = new ProxyFileSystem(localFs, URI.create(proxyUriString));
++
++ fs.initialize(name, conf);
++ }
++}
+diff --git shims/src/0.23/java/org/apache/hadoop/hive/shims/EmptyShim.java
shims/src/0.23/java/org/apache/hadoop/hive/shims/EmptyShim.java
+new file mode 100644
+index 0000000..0e5715d
+--- /dev/null
++++ shims/src/0.23/java/org/apache/hadoop/hive/shims/EmptyShim.java
+@@ -0,0 +1,4 @@
++package org.apache.hadoop.hive.shims;
++
++class EmptyShim {
++}
+diff --git shims/src/0.23/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java
shims/src/0.23/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java
+new file mode 100644
+index 0000000..3da7e28
+--- /dev/null
++++ shims/src/0.23/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java
+@@ -0,0 +1,501 @@
++/**
++ * Licensed to the Apache Software Foundation (ASF) under one
++ * or more contributor license agreements. See the NOTICE file
++ * distributed with this work for additional information
++ * regarding copyright ownership. The ASF licenses this file
++ * to you under the Apache License, Version 2.0 (the
++ * "License"); you may not use this file except in compliance
++ * with the License. You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++package org.apache.hadoop.hive.shims;
++
++import java.io.DataInput;
++import java.io.DataOutput;
++import java.io.IOException;
++import java.lang.reflect.Constructor;
++import java.util.ArrayList;
++import java.util.List;
++
++import javax.security.auth.login.LoginException;
++
++import org.apache.hadoop.conf.Configuration;
++import org.apache.hadoop.fs.FileStatus;
++import org.apache.hadoop.fs.FileSystem;
++import org.apache.hadoop.fs.Path;
++import org.apache.hadoop.fs.PathFilter;
++import org.apache.hadoop.hdfs.MiniDFSCluster;
++import org.apache.hadoop.hive.io.HiveIOExceptionHandlerChain;
++import org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil;
++import org.apache.hadoop.io.Text;
++import org.apache.hadoop.mapred.FileInputFormat;
++import org.apache.hadoop.mapred.InputFormat;
++import org.apache.hadoop.mapred.InputSplit;
++import org.apache.hadoop.mapred.JobConf;
++import org.apache.hadoop.mapred.JobContext;
++import org.apache.hadoop.mapred.JobStatus;
++import org.apache.hadoop.mapred.OutputCommitter;
++import org.apache.hadoop.mapred.RecordReader;
++import org.apache.hadoop.mapred.Reporter;
++import org.apache.hadoop.mapred.RunningJob;
++import org.apache.hadoop.mapred.TaskAttemptContext;
++import org.apache.hadoop.mapred.TaskCompletionEvent;
++import org.apache.hadoop.mapred.TaskID;
++import org.apache.hadoop.mapred.lib.CombineFileInputFormat;
++import org.apache.hadoop.mapred.lib.CombineFileSplit;
++import org.apache.hadoop.mapred.lib.NullOutputFormat;
++import org.apache.hadoop.security.UserGroupInformation;
++import org.apache.hadoop.tools.HadoopArchives;
++import org.apache.hadoop.util.ToolRunner;
++
++/**
++ * Implemention of shims against Hadoop 0.20.0.
++ */
++public class Hadoop20Shims implements HadoopShims {
++ public boolean usesJobShell() {
++ return false;
++ }
++
++ public boolean fileSystemDeleteOnExit(FileSystem fs, Path path)
++ throws IOException {
++
++ return fs.deleteOnExit(path);
++ }
++
++ public void inputFormatValidateInput(InputFormat fmt, JobConf conf)
++ throws IOException {
++ // gone in 0.18+
++ }
++
++ public boolean isJobPreparing(RunningJob job) throws IOException {
++ return job.getJobState() == JobStatus.PREP;
++ }
++ /**
++ * Workaround for hadoop-17 - jobclient only looks at commandlineconfig.
++ */
++ public void setTmpFiles(String prop, String files) {
++ // gone in 20+
++ }
++
++ public HadoopShims.MiniDFSShim getMiniDfs(Configuration conf,
++ int numDataNodes,
++ boolean format,
++ String[] racks) throws IOException {
++ return new MiniDFSShim(new MiniDFSCluster(conf, numDataNodes, format,
racks));
++ }
++
++ /**
++ * MiniDFSShim.
++ *
++ */
++ public class MiniDFSShim implements HadoopShims.MiniDFSShim {
++ private final MiniDFSCluster cluster;
++
++ public MiniDFSShim(MiniDFSCluster cluster) {
++ this.cluster = cluster;
++ }
++
++ public FileSystem getFileSystem() throws IOException {
++ return cluster.getFileSystem();
++ }
++
++ public void shutdown() {
++ cluster.shutdown();
++ }
++ }
++
++ /**
++ * We define this function here to make the code compatible between
++ * hadoop 0.17 and hadoop 0.20.
++ *
++ * Hive binary that compiled Text.compareTo(Text) with hadoop 0.20 won't
++ * work with hadoop 0.17 because in hadoop 0.20, Text.compareTo(Text) is
++ * implemented in org.apache.hadoop.io.BinaryComparable, and Java compiler
++ * references that class, which is not available in hadoop 0.17.
++ */
++ public int compareText(Text a, Text b) {
++ return a.compareTo(b);
++ }
++
++ @Override
++ public long getAccessTime(FileStatus file) {
++ return file.getAccessTime();
++ }
++
++ public HadoopShims.CombineFileInputFormatShim getCombineFileInputFormat() {
++ return new CombineFileInputFormatShim() {
++ @Override
++ public RecordReader getRecordReader(InputSplit split,
++ JobConf job, Reporter reporter) throws IOException {
++ throw new IOException("CombineFileInputFormat.getRecordReader not
needed.");
++ }
++ };
++ }
++
++ public static class InputSplitShim extends CombineFileSplit implements
HadoopShims.InputSplitShim {
++ long shrinkedLength;
++ boolean _isShrinked;
++ public InputSplitShim() {
++ super();
++ _isShrinked = false;
++ }
++
++ public InputSplitShim(CombineFileSplit old) throws IOException {
++ super(old);
++ _isShrinked = false;
++ }
++
++ @Override
++ public void shrinkSplit(long length) {
++ _isShrinked = true;
++ shrinkedLength = length;
++ }
++
++ public boolean isShrinked() {
++ return _isShrinked;
++ }
++
++ public long getShrinkedLength() {
++ return shrinkedLength;
++ }
++
++ @Override
++ public void readFields(DataInput in) throws IOException {
++ super.readFields(in);
++ _isShrinked = in.readBoolean();
++ if (_isShrinked) {
++ shrinkedLength = in.readLong();
++ }
++ }
++
++ @Override
++ public void write(DataOutput out) throws IOException {
++ super.write(out);
++ out.writeBoolean(_isShrinked);
++ if (_isShrinked) {
++ out.writeLong(shrinkedLength);
++ }
++ }
++ }
++
++ /* This class should be replaced with
org.apache.hadoop.mapred.lib.CombineFileRecordReader class, once
++ * https://issues.apache.org/jira/browse/MAPREDUCE-955 is fixed. This code
should be removed - it is a copy
++ * of org.apache.hadoop.mapred.lib.CombineFileRecordReader
++ */
++ public static class CombineFileRecordReader<K, V> implements
RecordReader<K, V> {
++
++ static final Class[] constructorSignature = new Class[] {
++ InputSplit.class,
++ Configuration.class,
++ Reporter.class,
++ Integer.class
++ };
++
++ protected CombineFileSplit split;
++ protected JobConf jc;
++ protected Reporter reporter;
++ protected Class<RecordReader<K, V>> rrClass;
++ protected Constructor<RecordReader<K, V>> rrConstructor;
++ protected FileSystem fs;
++
++ protected int idx;
++ protected long progress;
++ protected RecordReader<K, V> curReader;
++ protected boolean isShrinked;
++ protected long shrinkedLength;
++
++ public boolean next(K key, V value) throws IOException {
++
++ while ((curReader == null)
++ || !doNextWithExceptionHandler((K) ((CombineHiveKey) key).getKey(),
++ value)) {
++ if (!initNextRecordReader(key)) {
++ return false;
++ }
++ }
++ return true;
++ }
++
++ public K createKey() {
++ K newKey = curReader.createKey();
++ return (K)(new CombineHiveKey(newKey));
++ }
++
++ public V createValue() {
++ return curReader.createValue();
++ }
++
++ /**
++ * Return the amount of data processed.
++ */
++ public long getPos() throws IOException {
++ return progress;
++ }
++
++ public void close() throws IOException {
++ if (curReader != null) {
++ curReader.close();
++ curReader = null;
++ }
++ }
++
++ /**
++ * Return progress based on the amount of data processed so far.
++ */
++ public float getProgress() throws IOException {
++ return Math.min(1.0f, progress / (float) (split.getLength()));
++ }
++
++ /**
++ * A generic RecordReader that can hand out different recordReaders
++ * for each chunk in the CombineFileSplit.
++ */
++ public CombineFileRecordReader(JobConf job, CombineFileSplit split,
++ Reporter reporter,
++ Class<RecordReader<K, V>> rrClass)
++ throws IOException {
++ this.split = split;
++ this.jc = job;
++ this.rrClass = rrClass;
++ this.reporter = reporter;
++ this.idx = 0;
++ this.curReader = null;
++ this.progress = 0;
++
++ isShrinked = false;
++
++ assert (split instanceof InputSplitShim);
++ if (((InputSplitShim) split).isShrinked()) {
++ isShrinked = true;
++ shrinkedLength = ((InputSplitShim) split).getShrinkedLength();
++ }
++
++ try {
++ rrConstructor = rrClass.getDeclaredConstructor(constructorSignature);
++ rrConstructor.setAccessible(true);
++ } catch (Exception e) {
++ throw new RuntimeException(rrClass.getName() +
++ " does not have valid constructor", e);
++ }
++ initNextRecordReader(null);
++ }
++
++ /**
++ * do next and handle exception inside it.
++ * @param key
++ * @param value
++ * @return
++ * @throws IOException
++ */
++ private boolean doNextWithExceptionHandler(K key, V value) throws
IOException {
++ try {
++ return curReader.next(key, value);
++ } catch (Exception e) {
++ return HiveIOExceptionHandlerUtil.handleRecordReaderNextException(e,
jc);
++ }
++ }
++
++ /**
++ * Get the record reader for the next chunk in this CombineFileSplit.
++ */
++ protected boolean initNextRecordReader(K key) throws IOException {
++
++ if (curReader != null) {
++ curReader.close();
++ curReader = null;
++ if (idx > 0) {
++ progress += split.getLength(idx - 1); // done processing so far
++ }
++ }
++
++ // if all chunks have been processed or reached the length, nothing
more to do.
++ if (idx == split.getNumPaths() || (isShrinked && progress >
shrinkedLength)) {
++ return false;
++ }
++
++ // get a record reader for the idx-th chunk
++ try {
++ curReader = rrConstructor.newInstance(new Object[]
++ {split, jc, reporter, Integer.valueOf(idx)});
++
++ // change the key if need be
++ if (key != null) {
++ K newKey = curReader.createKey();
++ ((CombineHiveKey)key).setKey(newKey);
++ }
++
++ // setup some helper config variables.
++ jc.set("map.input.file", split.getPath(idx).toString());
++ jc.setLong("map.input.start", split.getOffset(idx));
++ jc.setLong("map.input.length", split.getLength(idx));
++ } catch (Exception e) {
++
curReader=HiveIOExceptionHandlerUtil.handleRecordReaderCreationException(e, jc);
++ }
++ idx++;
++ return true;
++ }
++ }
++
++ public abstract static class CombineFileInputFormatShim<K, V> extends
++ CombineFileInputFormat<K, V>
++ implements HadoopShims.CombineFileInputFormatShim<K, V> {
++
++ public Path[] getInputPathsShim(JobConf conf) {
++ try {
++ return FileInputFormat.getInputPaths(conf);
++ } catch (Exception e) {
++ throw new RuntimeException(e);
++ }
++ }
++
++ @Override
++ public void createPool(JobConf conf, PathFilter... filters) {
++ super.createPool(conf, filters);
++ }
++
++ @Override
++ public InputSplitShim[] getSplits(JobConf job, int numSplits) throws
IOException {
++ long minSize = job.getLong("mapred.min.split.size", 0);
++
++ // For backward compatibility, let the above parameter be used
++ if (job.getLong("mapred.min.split.size.per.node", 0) == 0) {
++ super.setMinSplitSizeNode(minSize);
++ }
++
++ if (job.getLong("mapred.min.split.size.per.rack", 0) == 0) {
++ super.setMinSplitSizeRack(minSize);
++ }
++
++ if (job.getLong("mapred.max.split.size", 0) == 0) {
++ super.setMaxSplitSize(minSize);
++ }
++
++ CombineFileSplit[] splits = (CombineFileSplit[]) super.getSplits(job,
numSplits);
++
++ InputSplitShim[] isplits = new InputSplitShim[splits.length];
++ for (int pos = 0; pos < splits.length; pos++) {
++ isplits[pos] = new InputSplitShim(splits[pos]);
++ }
++
++ return isplits;
++ }
++
++ public InputSplitShim getInputSplitShim() throws IOException {
++ return new InputSplitShim();
++ }
++
++ public RecordReader getRecordReader(JobConf job,
HadoopShims.InputSplitShim split,
++ Reporter reporter,
++ Class<RecordReader<K, V>> rrClass)
++ throws IOException {
++ CombineFileSplit cfSplit = (CombineFileSplit) split;
++ return new CombineFileRecordReader(job, cfSplit, reporter, rrClass);
++ }
++
++ }
++
++ public String getInputFormatClassName() {
++ return "org.apache.hadoop.hive.ql.io.CombineHiveInputFormat";
++ }
++
++ String[] ret = new String[2];
++
++ @Override
++ public String[] getTaskJobIDs(TaskCompletionEvent t) {
++ TaskID tid = t.getTaskAttemptId().getTaskID();
++ ret[0] = tid.toString();
++ ret[1] = tid.getJobID().toString();
++ return ret;
++ }
++
++ public void setFloatConf(Configuration conf, String varName, float val) {
++ conf.setFloat(varName, val);
++ }
++
++ @Override
++ public int createHadoopArchive(Configuration conf, Path sourceDir, Path
destDir,
++ String archiveName) throws Exception {
++
++ HadoopArchives har = new HadoopArchives(conf);
++ List<String> args = new ArrayList<String>();
++
++ if (conf.get("hive.archive.har.parentdir.settable") == null) {
++ throw new RuntimeException("hive.archive.har.parentdir.settable is not
set");
++ }
++ boolean parentSettable =
++ conf.getBoolean("hive.archive.har.parentdir.settable", false);
++
++ if (parentSettable) {
++ args.add("-archiveName");
++ args.add(archiveName);
++ args.add("-p");
++ args.add(sourceDir.toString());
++ args.add(destDir.toString());
++ } else {
++ args.add("-archiveName");
++ args.add(archiveName);
++ args.add(sourceDir.toString());
++ args.add(destDir.toString());
++ }
++
++ return ToolRunner.run(har, args.toArray(new String[0]));
++ }
++
++ public static class NullOutputCommitter extends OutputCommitter {
++ @Override
++ public void setupJob(JobContext jobContext) { }
++ @Override
++ public void cleanupJob(JobContext jobContext) { }
++
++ @Override
++ public void setupTask(TaskAttemptContext taskContext) { }
++ @Override
++ public boolean needsTaskCommit(TaskAttemptContext taskContext) {
++ return false;
++ }
++ @Override
++ public void commitTask(TaskAttemptContext taskContext) { }
++ @Override
++ public void abortTask(TaskAttemptContext taskContext) { }
++ }
++
++ public void setNullOutputFormat(JobConf conf) {
++ conf.setOutputFormat(NullOutputFormat.class);
++ conf.setOutputCommitter(Hadoop20Shims.NullOutputCommitter.class);
++
++ // option to bypass job setup and cleanup was introduced in hadoop-21
(MAPREDUCE-463)
++ // but can be backported. So we disable setup/cleanup in all versions >=
0.19
++ conf.setBoolean("mapred.committer.job.setup.cleanup.needed", false);
++
++ // option to bypass task cleanup task was introduced in hadoop-23
(MAPREDUCE-2206)
++ // but can be backported. So we disable setup/cleanup in all versions >=
0.19
++ conf.setBoolean("mapreduce.job.committer.task.cleanup.needed", false);
++ }
++
++ @Override
++ public UserGroupInformation getUGIForConf(Configuration conf) throws
IOException {
++ return UserGroupInformation.getCurrentUser();
++ }
++
++ @Override
++ public boolean isSecureShimImpl() {
++ return false;
++ }
++
++ @Override
++ public String getShortUserName(UserGroupInformation ugi) {
++ return ugi.getUserName();
++ }
++
++ @Override
++ public String getTokenStrForm(String tokenSignature) throws IOException {
++ throw new UnsupportedOperationException("Tokens are not supported in
current hadoop version");
++ }
++}
+diff --git
shims/src/0.23/java/org/apache/hadoop/hive/shims/HiveHarFileSystem.java
shims/src/0.23/java/org/apache/hadoop/hive/shims/HiveHarFileSystem.java
+new file mode 100644
+index 0000000..323ebbb
+--- /dev/null
++++ shims/src/0.23/java/org/apache/hadoop/hive/shims/HiveHarFileSystem.java
+@@ -0,0 +1,66 @@
++/**
++ * Licensed to the Apache Software Foundation (ASF) under one
++ * or more contributor license agreements. See the NOTICE file
++ * distributed with this work for additional information
++ * regarding copyright ownership. The ASF licenses this file
++ * to you under the Apache License, Version 2.0 (the
++ * "License"); you may not use this file except in compliance
++ * with the License. You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++
++package org.apache.hadoop.hive.shims;
++
++import java.io.IOException;
++
++import org.apache.hadoop.fs.BlockLocation;
++import org.apache.hadoop.fs.ContentSummary;
++import org.apache.hadoop.fs.FileStatus;
++import org.apache.hadoop.fs.HarFileSystem;
++import org.apache.hadoop.fs.Path;
++
++/**
++ * HiveHarFileSystem - fixes issues with Hadoop's HarFileSystem
++ *
++ */
++public class HiveHarFileSystem extends HarFileSystem {
++
++ @Override
++ public BlockLocation[] getFileBlockLocations(FileStatus file, long start,
++ long len) throws IOException {
++
++ // In some places (e.g. FileInputFormat) this BlockLocation is used to
++ // figure out sizes/offsets and so a completely blank one will not work.
++ String [] hosts = {"DUMMY_HOST"};
++ return new BlockLocation[]{new BlockLocation(null, hosts, 0,
file.getLen())};
++ }
++
++ @Override
++ public ContentSummary getContentSummary(Path f) throws IOException {
++ // HarFileSystem has a bug where this method does not work properly
++ // if the underlying FS is HDFS. See MAPREDUCE-1877 for more
++ // information. This method is from FileSystem.
++ FileStatus status = getFileStatus(f);
++ if (!status.isDir()) {
++ // f is a file
++ return new ContentSummary(status.getLen(), 1, 0);
++ }
++ // f is a directory
++ long[] summary = {0, 0, 1};
++ for(FileStatus s : listStatus(f)) {
++ ContentSummary c = s.isDir() ? getContentSummary(s.getPath()) :
++ new ContentSummary(s.getLen(), 1, 0);
++ summary[0] += c.getLength();
++ summary[1] += c.getFileCount();
++ summary[2] += c.getDirectoryCount();
++ }
++ return new ContentSummary(summary[0], summary[1], summary[2]);
++ }
++}
+diff --git shims/src/0.23/java/org/apache/hadoop/hive/shims/Jetty20Shims.java
shims/src/0.23/java/org/apache/hadoop/hive/shims/Jetty20Shims.java
+new file mode 100644
+index 0000000..13c6b31
+--- /dev/null
++++ shims/src/0.23/java/org/apache/hadoop/hive/shims/Jetty20Shims.java
+@@ -0,0 +1,56 @@
++/**
++ * Licensed to the Apache Software Foundation (ASF) under one
++ * or more contributor license agreements. See the NOTICE file
++ * distributed with this work for additional information
++ * regarding copyright ownership. The ASF licenses this file
++ * to you under the Apache License, Version 2.0 (the
++ * "License"); you may not use this file except in compliance
++ * with the License. You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++package org.apache.hadoop.hive.shims;
++
++import java.io.IOException;
++
++import org.mortbay.jetty.bio.SocketConnector;
++import org.mortbay.jetty.handler.RequestLogHandler;
++import org.mortbay.jetty.webapp.WebAppContext;
++
++/**
++ * Jetty20Shims.
++ *
++ */
++public class Jetty20Shims implements JettyShims {
++ public Server startServer(String listen, int port) throws IOException {
++ Server s = new Server();
++ s.setupListenerHostPort(listen, port);
++ return s;
++ }
++
++ private static class Server extends org.mortbay.jetty.Server implements
JettyShims.Server {
++ public void addWar(String war, String contextPath) {
++ WebAppContext wac = new WebAppContext();
++ wac.setContextPath(contextPath);
++ wac.setWar(war);
++ RequestLogHandler rlh = new RequestLogHandler();
++ rlh.setHandler(wac);
++ this.addHandler(rlh);
++ }
++
++ public void setupListenerHostPort(String listen, int port)
++ throws IOException {
++
++ SocketConnector connector = new SocketConnector();
++ connector.setPort(port);
++ connector.setHost(listen);
++ this.addConnector(connector);
++ }
++ }
++}
Modified:
incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/deb/hive/rules
URL:
http://svn.apache.org/viewvc/incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/deb/hive/rules?rev=1196924&r1=1196923&r2=1196924&view=diff
==============================================================================
--- incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/deb/hive/rules
(original)
+++ incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/deb/hive/rules
Thu Nov 3 02:55:36 2011
@@ -26,13 +26,14 @@ export DH_OPTIONS
clean:
dh_testdir
dh_testroot
- ant -f src/build.xml clean
+ ant clean
rm -f *-stamp
rm -Rf debian/.ivy
dh_clean
build-indep: build-indep-stamp
build-indep-stamp:
+ patch -p0 < debian/patch
mkdir -p /tmp/debian-hive/.ivy
bash debian/do-component-build -Divy.home=`pwd`/debian/.ivy
touch $@
Modified:
incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/rpm/hive/SPECS/hive.spec
URL:
http://svn.apache.org/viewvc/incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/rpm/hive/SPECS/hive.spec?rev=1196924&r1=1196923&r2=1196924&view=diff
==============================================================================
---
incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/rpm/hive/SPECS/hive.spec
(original)
+++
incubator/bigtop/branches/hadoop-0.23/bigtop-packages/src/rpm/hive/SPECS/hive.spec
Thu Nov 3 02:55:36 2011
@@ -70,6 +70,7 @@ Source5: hadoop-hive-server.default
Source6: hadoop-hive-metastore.default
Source7: hive.1
Source8: hive-site.xml
+Patch0: patch
Requires: hadoop >= 0.20.2, bigtop-utils
Obsoletes: %{name}-webinterface
@@ -114,7 +115,8 @@ This optional package hosts a metadata s
%prep
-%setup -n hive-%{hive_base_version}
+%setup -n apache-hive-6e882d8
+%patch0 -p0
%build
bash %{SOURCE1}
Modified: incubator/bigtop/branches/hadoop-0.23/bigtop.mk
URL:
http://svn.apache.org/viewvc/incubator/bigtop/branches/hadoop-0.23/bigtop.mk?rev=1196924&r1=1196923&r2=1196924&view=diff
==============================================================================
--- incubator/bigtop/branches/hadoop-0.23/bigtop.mk (original)
+++ incubator/bigtop/branches/hadoop-0.23/bigtop.mk Thu Nov 3 02:55:36 2011
@@ -72,12 +72,14 @@ $(eval $(call PACKAGE,pig,PIG))
HIVE_NAME=hive
HIVE_RELNOTES_NAME=Apache Hive
HIVE_PKG_NAME=hadoop-hive
-HIVE_BASE_VERSION=0.7.1
+HIVE_BASE_VERSION=0.9.0
HIVE_PKG_VERSION=$(HIVE_BASE_VERSION)
HIVE_RELEASE_VERSION=1
HIVE_TARBALL_DST=hive-$(HIVE_BASE_VERSION).tar.gz
-HIVE_TARBALL_SRC=$(HIVE_TARBALL_DST)
-HIVE_SITE=$(APACHE_MIRROR)/hive/hive-$(HIVE_BASE_VERSION)/
+#HIVE_TARBALL_SRC=$(HIVE_TARBALL_DST)
+#HIVE_SITE=$(APACHE_MIRROR)/hive/hive-$(HIVE_BASE_VERSION)/
+HIVE_SITE=https://github.com/apache/hive/tarball
+HIVE_TARBALL_SRC=6e882d8
$(eval $(call PACKAGE,hive,HIVE))
# Sqoop