我有一个存储在BigQuery表中的大型数据集,我想将其加载到pypark RDD中以进行ETL数据处理.
我意识到BigQuery支持Hadoop输入/输出格式
https://cloud.google.com/hadoop/writing-with-bigquery-connector
并且pyspark应该能够使用此接口以使用方法"newAPIHadoopRDD"创建RDD.
http://spark.apache.org/docs/latest/api/python/pyspark.html
不幸的是,两端的文档似乎很少,超出了我对Hadoop/Spark/BigQuery的了解.是否有人知道如何做到这一点?
google-bigquery apache-spark google-hadoop pyspark google-cloud-dataproc
我正在运行Spark作业(版本1.2.0),输入的内容是Google Clous存储桶中的文件夹(例如gs:// mybucket / folder)
在Mac机器上本地运行作业时,出现以下错误:
5932 [main]错误com.doit.customer.dataconverter.Phase1-日期作业:2014_09_23失败,错误:方案的无文件系统:gs
我知道要支持gs路径,需要做2件事。一种是安装GCS连接器,另一种是在Hadoop安装的core-site.xml中进行以下设置:
<property>
<name>fs.gs.impl</name>
<value>com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem</value>
<description>The FileSystem for gs: (GCS) uris.</description>
</property>
<property>
<name>fs.AbstractFileSystem.gs.impl</name>
<value>com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS</value>
<description>
The AbstractFileSystem for gs: (GCS) uris. Only necessary for use with Hadoop 2.
</description>
</property>
Run Code Online (Sandbox Code Playgroud)
我认为我的问题来自这样一个事实,即我不确定在此本地模式下确切需要在哪里配置每个组件。在Intellij项目中,我正在使用Maven,因此我按以下方式导入了spark库:
<dependency> <!-- Spark dependency -->
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.2.0</version>
<exclusions>
<exclusion> <!-- declare the exclusion here -->
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
</exclusion>
</exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)
和Hadoop 1.2.1,如下所示:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>1.2.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
问题是,我不确定为Spark配置hadoop的位置,以及配置hadoop conf的位置。因此,我可能添加了错误的Hadoop安装。另外,修改文件后是否需要重新启动?据我所知,我的机器上没有运行Hadoop服务。
hadoop google-cloud-storage apache-spark google-hadoop google-cloud-dataproc
当使用BigQuery Connector从BigQuery读取数据时,我发现它首先将所有数据复制到Google云端存储.然后将这些数据并行读入Spark,但是在读取大表时,复制数据阶段需要很长时间.那么有更有效的方法将数据从BigQuery读入Spark吗?
另一个问题:从BigQuery读取由2个阶段组成(复制到GCS,从GCS并行读取).复制阶段受Spark群集大小影响还是需要固定时间?
google-bigquery apache-spark google-hadoop google-cloud-dataproc
我正在执行scala Spark作业,该作业需要使用Java库(youtube / vitess),该库依赖于比DataProc 1.1当前提供的GRPC(1.01),Guava(19.0)和Protobuf(3.0.0)更高的版本。图片。
当在本地运行项目并使用maven进行构建时,将加载这些依赖项的正确版本,作业将无问题运行。将作业提交给DataProc时,首选这些库的DataProc版本,并且该作业将引用无法解析的类函数。
在DataProc上提交Spark作业时,如何确保加载正确版本的依赖项依赖关系的推荐方法是什么?我无法重写此库的组件,以使用DataProc提供的这些软件包的旧版本。
我正在尝试将我的Hadoop集群中的现有数据(JSON)迁移到Google云端存储.
我已经探索过GSUtil,它似乎是将大数据集移动到GCS的推荐选项.它似乎可以处理庞大的数据集.虽然GSUtil似乎只能将数据从本地机器移动到GCS或S3 < - > GCS,但是无法从本地Hadoop集群移动数据.
将数据从本地Hadoop集群移动到GCS的推荐方法是什么?
对于GSUtil,它可以直接将数据从本地Hadoop集群(HDFS)移动到GCS,还是首先需要在运行GSUtil的机器上复制文件然后转移到GCS?
使用Google客户端(Java API)库与GSUtil的优缺点是什么?
非常感谢,
我正在尝试使用该bdutil脚本从部署在Google Cloud中的Hadoop群集访问Google Storage存储桶.如果存储桶访问是只读的,则会失败.
我在做什么:
使用部署集群
bdutil deploy -e datastore_env.sh
Run Code Online (Sandbox Code Playgroud)在主人:
vgorelik@vgorelik-hadoop-m:~$ hadoop fs -ls gs://pgp-harvard-data-public 2>&1 | head -10
14/08/14 14:34:21 INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.2.8-hadoop1
14/08/14 14:34:25 WARN gcsio.GoogleCloudStorage: Repairing batch of 174 missing directories.
14/08/14 14:34:26 ERROR gcsio.GoogleCloudStorage: Failed to repair some missing directories.
java.io.IOException: Multiple IOExceptions.
java.io.IOException: Multiple IOExceptions.
at com.google.cloud.hadoop.gcsio.GoogleCloudStorageExceptions.createCompositeException(GoogleCloudStorageExceptions.java:61)
at com.google.cloud.hadoop.gcsio.GoogleCloudStorageImpl.createEmptyObjects(GoogleCloudStorageImpl.java:361)
at com.google.cloud.hadoop.gcsio.GoogleCloudStorageImpl.createEmptyObjects(GoogleCloudStorageImpl.java:372)
at com.google.cloud.hadoop.gcsio.GoogleCloudStorageImpl.listObjectInfo(GoogleCloudStorageImpl.java:914)
at com.google.cloud.hadoop.gcsio.CacheSupplementedGoogleCloudStorage.listObjectInfo(CacheSupplementedGoogleCloudStorage.java:455)
Run Code Online (Sandbox Code Playgroud)看看GCS Java源代码,似乎Google Cloud Storage Connector for Hadoop需要空的"目录"对象,如果存储桶是可写的,它可以自己创建; 否则就失败了.设置fs.gs.implicit.dir.repair.enable=false会导致"错误检索对象"错误.
是否有可能以某种方式使用只读桶作为MR作业输入?
我gsutil用于文件上传.可以强制在文件上传时创建这些空对象吗?
hadoop google-cloud-storage gsutil google-cloud-platform google-hadoop
我正在尝试将在Google Cloud VM上运行的Hadoop连接到Google云端存储.我有:
我可以运行gsutil -ls gs:// mybucket /但没有任何问题,但是当我执行时
hadoop fs -ls gs:// mybucket /
我得到输出:
14/09/30 23:29:31 INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.2.9-hadoop2
ls: Error getting access token from metadata server at: http://metadata/computeMetadata/v1/instance/service-accounts/default/token
Run Code Online (Sandbox Code Playgroud)
想知道我缺少哪些步骤让Hadoop能够看到Google存储?
谢谢!
我正在尝试在Google Compute引擎上运行Hadoop Job来对抗我们的压缩数据,该数据位于Google云端存储上.在尝试通过SequenceFileInputFormat读取数据时,我得到以下异常:
hadoop@hadoop-m:/home/salikeeno$ hadoop jar ${JAR} ${PROJECT} ${OUTPUT_TABLE}
14/08/21 19:56:00 INFO jaws.JawsApp: Using export bucket 'askbuckerthroughhadoop' as specified in 'mapred.bq.gcs.bucket'
14/08/21 19:56:00 INFO bigquery.BigQueryConfiguration: Using specified project-id 'regal-campaign-641' for output
14/08/21 19:56:00 INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.2.8-hadoop1
14/08/21 19:56:01 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
14/08/21 19:56:03 INFO input.FileInputFormat: Total input paths to process : 1
14/08/21 19:56:09 INFO mapred.JobClient: Running job: job_201408211943_0002
14/08/21 19:56:10 INFO mapred.JobClient: map 0% reduce …Run Code Online (Sandbox Code Playgroud) google-api google-api-java-client google-compute-engine snappy google-hadoop
我正在使用 Spark 1.1。我有一个 Spark 作业,它只在存储桶下寻找特定模式的文件夹(即以...开头的文件夹),并且应该只处理那些。我通过执行以下操作来实现这一点:
FileSystem fs = FileSystem.get(new Configuration(true));
FileStatus[] statusArr = fs.globStatus(new Path(inputPath));
List<FileStatus> statusList = Arrays.asList(statusArr);
List<String> pathsStr = convertFileStatusToPath(statusList);
JavaRDD<String> paths = sc.parallelize(pathsStr);
Run Code Online (Sandbox Code Playgroud)
但是,在 Google Cloud Storage 路径上运行此作业时:gs://rsync-1/2014_07_31*(使用最新的 Google Cloud Storage 连接器 1.2.9),我收到以下错误:
4/10/13 10:28:38 INFO slf4j.Slf4jLogger: Slf4jLogger started
14/10/13 10:28:38 INFO util.Utils: Successfully started service 'Driver' on port 60379.
14/10/13 10:28:38 INFO worker.WorkerWatcher: Connecting to worker akka.tcp://sparkWorker@hadoop-w-9.c.taboola-qa-01.internal:45212/user/Worker
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.spark.deploy.worker.DriverWrapper$.main(DriverWrapper.scala:40)
at org.apache.spark.deploy.worker.DriverWrapper.main(DriverWrapper.scala) …Run Code Online (Sandbox Code Playgroud)