相关疑难解决方法(0)

如何在Spark RDD(Java)中通过索引获取元素

我知道方法rdd.first(),它给了我RDD中的第一个元素.

还有方法rdd.take(num)这给了我第一个"num"元素.

但是没有可能通过索引获得元素吗?

谢谢.

java apache-spark rdd

27
推荐指数
1
解决办法
5万
查看次数

将函数应用于Spark Dataframe Column

来自R,我习惯于轻松地对列进行操作.有没有什么简单的方法可以使用我在scala中编写的这个函数

def round_tenths_place( un_rounded:Double ) : Double = {
    val rounded = BigDecimal(un_rounded).setScale(1, BigDecimal.RoundingMode.HALF_UP).toDouble
    return rounded
}
Run Code Online (Sandbox Code Playgroud)

并将其应用于数据框的一列 - 我希望这样做:

 bid_results.withColumn("bid_price_bucket", round_tenths_place(bid_results("bid_price")) )
Run Code Online (Sandbox Code Playgroud)

我没有找到任何简单的方法,我正在努力弄清楚如何做到这一点.必须有一种比将数据帧转换为RDD更简单的方法,然后从行的rdd中选择以获得正确的字段并将函数映射到所有值,是吗?还有一些更简洁的创建SQL表然后使用sparkSQL UDF执行此操作?

scala user-defined-functions dataframe apache-spark apache-spark-sql

9
推荐指数
1
解决办法
3万
查看次数

如何向Spark RDD添加新列?

我有一个RDD MANY列(例如,几百个),我怎么在这个RDD的末尾添加一个多列?

例如,如果我的RDD如下所示:

    123, 523, 534, ..., 893
    536, 98, 1623, ..., 98472
    537, 89, 83640, ..., 9265
    7297, 98364, 9, ..., 735
    ......
    29, 94, 956, ..., 758
Run Code Online (Sandbox Code Playgroud)

如何向其中添加一列,其值是第二列和第三列的总和?

非常感谢你.

apache-spark rdd

8
推荐指数
2
解决办法
1万
查看次数

将列添加到Spark DataFrame并为其计算值

我有一个CSV文档,我正在加载到包含纬度和经度列的SQLContext中.

val sqlContext = new org.apache.spark.sql.SQLContext(sc);
val df = sqlContext.read.format("com.databricks.spark.csv").option("header", "false").option("delimiter","\t").schema(customSchema).load(inputFile);
Run Code Online (Sandbox Code Playgroud)

CSV示例

metro_code, resolved_lat, resolved_lon
602, 40.7201, -73.2001
Run Code Online (Sandbox Code Playgroud)

我正在试图找出添加新列并计算每行的GeoHex的最佳方法.使用geohex软件包可以轻松地哈希和拉长.我想我需要运行parallelize方法或者我已经看到一些将函数传递给withColumn的示例.

apache-spark apache-spark-sql

3
推荐指数
1
解决办法
5597
查看次数

如何修改/转换数据框的列?

我有一个pyspark.sql.dataframe.DataFrame使用创建的实例

dataframe = sqlContext.sql("select * from table").
Run Code Online (Sandbox Code Playgroud)

一列是 'arrival_date' 并包含一个字符串。

如何修改此列以便仅从中取出前 4 个字符并丢弃其余字符?

如何将此列的类型从字符串转换为日期?

在 graphlab.SFrame 中,这将是:

dataframe['column_name'] = dataframe['column_name'].apply(lambda x: x[:4] )
Run Code Online (Sandbox Code Playgroud)

dataframe['column_name'] = dataframe['column_name'].str_to_datetime()
Run Code Online (Sandbox Code Playgroud)

python apache-spark apache-spark-sql pyspark

3
推荐指数
1
解决办法
1万
查看次数

在执行连接时更新 Spark 中的数据帧列名称 - Scala

我在 Apache Spark 2.1.0 中有两个数据帧 aaa_01 和 aaa_02。

我对这两个数据帧执行内部连接,从两个数据帧中选择几个列以显示在输出中。

Join 工作得很好,但输出数据帧的列名与输入数据帧中的列名相同。我被困在这里。我需要有新的列名,而不是在我的输出数据框中获得相同的列名。

下面给出示例代码以供参考

DF1.alias("a").join(DF2.alias("b"),DF1("primary_col") === DF2("primary_col"), "inner").select("a.col1","a.col2","b.col4")
Run Code Online (Sandbox Code Playgroud)

我正在获取列名为“col1、col2、col3”的输出数据框。我试图修改代码如下但徒劳无功

DF1.alias("a").join(DF2.alias("b"),DF1("primary_col") === DF2("primary_col"), "inner").select("a.col1","a.col2","b.col4" as "New_Col")
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。提前致谢。

已编辑

我浏览并得到了下面给出的类似帖子。但我没有看到我的问题的答案。

在 spark 中更新数据框列

在 spark scala 中重命名数据框的列名

这篇文章中的答案:Spark Dataframe 区分具有重复名称的列与我无关,因为它与 pyspark 的相关性比 Scala 更大,并且它已经解释了如何重命名数据帧的所有列,而我的要求是只重命名一个或几个列。

scala apache-spark spark-dataframe

2
推荐指数
1
解决办法
1662
查看次数