我有一个火花数据框的输出,如下所示:
Amt | id | num | Start_date |标识符
43.45 | 19840 | A345 | [2014-12-26,2013-12-12] | [232323,45466] |
43.45 | 19840 | A345 | [2010-03-16,2013-16-12] | [34343,45454] |
我的要求是从上面的输出
生成以下格式的输出 Amt | id | num | Start_date |标识符
43.45 | 19840 | A345 | 2014-12-26 | 232323个
43.45 | 19840 | A345 | 2013年12月12日| 45466个
43.45 | 19840 | A345 | 2010-03-16 | 34343个
43.45 | 19840 | A345 | 2013-16-12 | 45454
有人可以帮助我实现这一目标。
答案 0 :(得分:1)
这是你正在寻找的东西吗?
.navbar.fixed{
background: rgba(255,255,255,0.6);
}
返回:
<?php
$conn = mysqli_connect('server', 'username', 'password', 'database') or die ("Couldnt connect to database");
$sql = "SELECT * from table_name";
$query = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($query);
if (mysqli_num_rows($query)==0)
{
echo '<tr><td align=center colspan=7>No Rows Returned</td>/tr>';
}
else
{
while( $row = mysqli_fetch_assoc($query))
{
echo "<tr valign=top><td>{$row['id']}</td><td>{$row['usergroup']}</td><td>{$row['Firstname']}</td><td>{$row['Surname']}</td><td>{$row['Email']}</td><td>{$row['Address']}</td><td>{$row['Postcode']}</td></tr>\n";
}
}
?>
编辑:
由于您希望有多列应该压缩,您应该尝试这样的事情:
import org.apache.spark.sql._
import org.apache.spark.sql.functions._
val sparkSession = ...
import sparkSession.implicits._
val input = sc.parallelize(Seq(
(43.45, 19840, "A345", Seq("2014-12-26", "2013-12-12"), Seq(232323,45466)),
(43.45, 19840, "A345", Seq("2010-03-16", "2013-16-12"), Seq(34343,45454))
)).toDF("amt", "id", "num", "start_date", "identifier")
val zipArrays = udf { (dates: Seq[String], identifiers: Seq[Int]) =>
dates.zip(identifiers)
}
val output = input.select($"amt", $"id", $"num", explode(zipArrays($"start_date", $"identifier")))
.select($"amt", $"id", $"num", $"col._1".as("start_date"), $"col._2".as("identifier"))
output.show()
答案 1 :(得分:0)
如果我理解正确,你需要col 3和4的第一个元素。 这有意义吗?
val newDataFrame = for {
row <- oldDataFrame
} yield {
val zro = row(0) // 43.45
val one = row(1) // 19840
val two = row(2) // A345
val dates = row(3) // [2014-12-26, 2013-12-12]
val numbers = row(4) // [232323,45466]
Row(zro, one, two, dates(0), numbers(0))
}
答案 2 :(得分:0)
你可以使用SparkSQL。
首先,您要创建一个包含我们需要处理的信息的视图:
df.createOrReplaceTempView("tableTest")
然后您可以选择包含扩展的数据:
sparkSession.sqlContext.sql(
"SELECT Amt, id, num, expanded_start_date, expanded_id " +
"FROM tableTest " +
"LATERAL VIEW explode(Start_date) Start_date AS expanded_start_date " +
"LATERAL VIEW explode(Identifier) AS expanded_id")
.show()