Apache Spark 2.0:表达式字符串按降序排列到orderBy()/ sort()列

时间:2018-12-14 01:14:56

标签: apache-spark pyspark apache-spark-sql pyspark-sql

我正在看一个类似于以下内容的图书示例(实际上是相同的):

private void btn4_Click_1(object sender, EventArgs e)
{
    listView1.Items.Clear();

    SqlConnection con = new SqlConnection(@"Server=.\SQLEXPRESS; Database=Student; Integrated Security=true");
    SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM info WHERE id LIKE '" + box4.Text + "%'", con);

    DataTable dt = new DataTable();
    da.Fill(dt);

    listView1.Items.Clear();

    foreach (DataRow row in dt.Rows)
    {
        ListViewItem item = new ListViewItem(row[0].ToString());

        for (int i = 1; i < dt.Columns.Count; i++)
        {
            item.SubItems.Add(row[i].ToString());
        }

        listView1.Items.Add(item);
    }
}

现在该书示例声称最后一条语句将按>>> from pyspark.sql import functions as sFn >>> # Note: I import Spark functions this way to avoid name collisions w/ Python. >>> # Usage below: sFn.expr(), sFn.col(), etc. >>> col0 = [0, 1, 2, 3] >>> col1 = [4, 5, 6, 7] >>> myDF = spark.createDataFrame(zip(col0, col1), schema=['col0', 'col1']) >>> print(myDF) >>> myDF.show() >>> myDF.orderBy(sFn.expr('col0 desc')).show() # <--- Problem line. Doesn't descend. 降序排列,但事实并非如此:

col0

但是,这种语法变体一直对我有用:

DataFrame[col0: bigint, col1: bigint]

+----+----+
|col0|col1|
+----+----+
|   0|   4|
|   1|   5|
|   2|   6|
|   3|   7|
+----+----+

+----+----+
|col0|col1|
+----+----+
|   0|   4|
|   1|   5|
|   2|   6|
|   3|   7|
+----+----+

是拼写错误或勘误表上方的问题变量吗?如果是拼写错误或勘误表,则需要进行哪些调整才能使其正常工作?

谢谢。

1 个答案:

答案 0 :(得分:3)

sFn.expr('col0 desc')中,desc被翻译为别名,而不是order by modifier,正如您在控制台中键入的那样:

sFn.expr('col0 desc')
# Column<col0 AS `desc`>

以下是您可以根据需要选择的其他几个选项:

 myDF.orderBy('col0', ascending=0).show()
+----+----+
|col0|col1|
+----+----+
|   3|   7|
|   2|   6|
|   1|   5|
|   0|   4|
+----+----+


myDF.orderBy(sFn.desc('col0')).show()
+----+----+
|col0|col1|
+----+----+
|   3|   7|
|   2|   6|
|   1|   5|
|   0|   4|
+----+----+

myDF.orderBy(myDF.col0.desc()).show()
+----+----+
|col0|col1|
+----+----+
|   3|   7|
|   2|   6|
|   1|   5|
|   0|   4|
+----+----+