我从csv文件中读取数据,但没有索引.
我想在1到行的数字中添加一列.
我该怎么办,谢谢(scala)
正如我们经常听到的apache zeppelin那样,我们脑海中浮现的问题很少:
鉴于HashPartitioner文档说:
[HashPartitioner]使用Java的Object.hashCode实现基于散列的分区.
说我想DeviceData通过它进行分区kind.
case class DeviceData(kind: String, time: Long, data: String)
Run Code Online (Sandbox Code Playgroud)
RDD[DeviceData]通过覆盖deviceData.hashCode()方法并仅使用哈希码来分区是否正确kind?
但是考虑到HashPartitioner需要一些分区参数,我很困惑我是否需要事先知道种类的数量以及如果有多种类型而不是分区会发生什么?
如果我将分区数据写入磁盘,它会在读取时保持分区吗?
我的目标是致电
deviceDataRdd.foreachPartition(d: Iterator[DeviceData] => ...)
Run Code Online (Sandbox Code Playgroud)
并且在迭代器中只有DeviceData相同的kind值.
我正在尝试将一个数据帧写入到HDFS位置的spark中,我希望如果我添加partitionBy符号Spark将创建分区(类似于以Parquet格式编写)文件夹的形式
partition_column_name=partition_value
Run Code Online (Sandbox Code Playgroud)
(即partition_date=2016-05-03).为此,我运行了以下命令:
(df.write
.partitionBy('partition_date')
.mode('overwrite')
.format("com.databricks.spark.csv")
.save('/tmp/af_organic'))
Run Code Online (Sandbox Code Playgroud)
但是没有创建分区文件夹,知道我为了火花DF自动创建那些文件夹我应该做些什么?
谢谢,
我有一个EMR Spark Job需要在一个帐户上从S3读取数据并写入另一个帐户.
我把工作分成两步.
从S3读取数据(因为我的EMR集群在同一帐户中,所以不需要凭据).
读取步骤1创建的本地HDFS中的数据,并将其写入另一个帐户的S3存储桶.
我试过设置hadoopConfiguration:
sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "<your access key>")
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey","<your secretkey>")
Run Code Online (Sandbox Code Playgroud)
并导出群集上的密钥:
$ export AWS_SECRET_ACCESS_KEY=
$ export AWS_ACCESS_KEY_ID=
Run Code Online (Sandbox Code Playgroud)
我已经尝试了群集和客户端模式以及spark-shell而没有运气.
他们每个都返回一个错误:
ERROR ApplicationMaster: User class threw exception: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception:
Access Denied
Run Code Online (Sandbox Code Playgroud) 我试图在Java应用程序中连接虚拟机中运行的Spark集群与IP 10.20.30.50和端口7077,并运行单词计数示例:
SparkConf conf = new SparkConf().setMaster("spark://10.20.30.50:7077").setAppName("wordCount");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> textFile = sc.textFile("hdfs://localhost:8020/README.md");
String result = Long.toString(textFile.count());
JavaRDD<String> words = textFile.flatMap((FlatMapFunction<String, String>) s -> Arrays.asList(s.split(" ")).iterator());
JavaPairRDD<String, Integer> pairs = words.mapToPair((PairFunction<String, String, Integer>) s -> new Tuple2<>(s, 1));
JavaPairRDD<String, Integer> counts = pairs.reduceByKey((Function2<Integer, Integer, Integer>) (a, b) -> a + b);
counts.saveAsTextFile("hdfs://localhost:8020/tmp/output");
sc.stop();
return result;
Run Code Online (Sandbox Code Playgroud)
Java应用程序显示以下堆栈跟踪:
Running Spark version 2.0.1
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Changing …Run Code Online (Sandbox Code Playgroud) 我是Apache Spark的新手.
我的工作是读取两个CSV文件,从中选择一些特定列,合并,聚合并将结果写入单个CSV文件.
例如,
name,age,deparment_id
Run Code Online (Sandbox Code Playgroud)
department_id,deparment_name,location
Run Code Online (Sandbox Code Playgroud)
name,age,deparment_name
Run Code Online (Sandbox Code Playgroud)
我正在将CSV加载到数据帧中.然后能够使用join,select,filter,drop数据帧中存在的几种方法获得第三个数据帧
我也可以用几个来做同样的事情 RDD.map()
我也可以通过执行hiveql使用来做同样的事情HiveContext
我想知道如果我的CSV文件很大,哪个是有效的方法?为什么?
我正在尝试使用SparkSQL在数据帧上执行广播散列连接,如下所示:https://docs.cloud.databricks.com/docs/latest/databricks_guide/06%20Spark%20SQL%20%26%20DataFrames/05% 20BroadcastHashJoin%20-%20scala.html
在该示例中,(small)DataFrame通过saveAsTable持久化,然后通过spark SQL(即via)进行连接sqlContext.sql("..."))
我遇到的问题是我需要使用sparkSQL API来构造我的SQL(我还要加入~50个带有ID列表的表,并且不想手工编写SQL).
How do I tell spark to use the broadcast hash join via the API? The issue is that if I load the ID list (from the table persisted via `saveAsTable`) into a `DataFrame` to use in the join, it isn't clear to me if Spark can apply the broadcast hash join.
Run Code Online (Sandbox Code Playgroud) 我想了解HBase架构.我可以看到两个不同的术语用于相同的目的.
Write Ahead Logs并且Memstore,两者都用于存储尚未持久化的新数据permanent storage.
WAL和MemStore有什么区别?
更新:
WAL - 用于在服务器崩溃时恢复尚未保留的数据.MemStore - 将更新作为Sorted Keyvalue存储在内存中.
在将数据写入磁盘之前,似乎有很多重复数据.
我已经在Python中使用Apache Arrow和Spark一段时间了,并且通过使用Pandas作为中介,我可以轻松地在数据帧和Arrow对象之间进行转换.
然而,最近,我已经从Python迁移到Scala与Spark交互,并且在Scala(Java)中使用Arrow并不像在Python中那样直观.我的基本需求是尽快将Spark数据帧(或RDD,因为它们很容易转换)转换为Arrow对象.我最初的想法是首先转换为Parquet并从Parquet转到Arrow,因为我记得那个pyarrow可以从Parquet读取.但是,如果我错了,请纠正我,在看了一段时间的Arrow Java文档后,我找不到Parquet to Arrow功能.Java版本中不存在此功能吗?有没有另一种方法可以将Spark数据帧提供给Arrow对象?也许将数据帧的列转换为数组然后转换为箭头对象?
任何帮助将非常感激.谢谢
编辑:找到以下链接,将镶木地板架构转换为箭头架构.但它似乎没有从我需要的镶木地板文件中返回一个Arrow对象:https: //github.com/apache/parquet-mr/blob/70f28810a5547219e18ffc3465f519c454fee6e5/parquet-arrow/src/main/java/org/apache /parquet/arrow/schema/SchemaConverter.java
apache-spark ×9
scala ×4
dataframe ×2
hdfs ×2
amazon-emr ×1
amazon-s3 ×1
apache-arrow ×1
architecture ×1
bigdata ×1
csv ×1
hadoop ×1
hbase ×1
java ×1
partitioning ×1
rdd ×1