小编Pri*_*NAI的帖子

是否可以在spark sql中以编程方式对列进行别名?

在spark SQL(也许只有HiveQL)中,可以做到:

select sex, avg(age) as avg_age
from humans
group by sex
Run Code Online (Sandbox Code Playgroud)

这将导致一个DataFrame名为"sex"和列的列"avg_age".

如何avg(age)"avg_age"不使用文本SQL的情况下使用别名?

编辑: 在零点323的回答之后,我需要添加以下约束:

要重命名的列的名称可能不知道/保证甚至无法寻址.在文本SQL中,使用"选择EXPR作为名称"不需要具有EXPR的中间名称.在上面的示例中也是如此,其中"avg(age)"可以获得各种自动生成的名称(在spark发布和sql-context后端之间也有所不同).

scala apache-spark apache-spark-sql

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

constexpr-function参数如果直接使用则被认为是constexpr,但如果用于调用另一个constexpr函数则不被认为是constexpr

在尝试使用constexpr函数和模板(以及非类型模板参数)时,我偶然发现了一个现象,我无法理解哪个规则使它生效.

因此,根据有关constexpr-s的规则,我的问题基本上是"为什么会发生这种情况"."这个"如下.

在其中一个constexpr函数中,如果直接使用参数,则在编译时计算中使用此参数没有问题.(示例第2行)

当相同的参数用作另一个constexpr函数的参数时,编译器会抱怨此表达式(参数id)不是constexpr.(例子第3行)

简而言之:

template <typename T> constexpr std::size size (T obj) { return obj.size(); }
template <typename T> constexpr auto sz1 (T obj) { return std::make_index_sequence< obj.size() > { }.size(); } // OK ...
template <typename T> constexpr auto sz2 (T obj) { return std::make_index_sequence< size(obj) > { }.size(); } // ERROR
  // "obj" is [suddenly] not a constexpr
Run Code Online (Sandbox Code Playgroud)

g ++ - 4.9.1和clang ++ - 3.4.2都会发生这种情况.

下面是一个小型测试程序,用于快速简便的实验.


#include <utility>
#include <array>
#include <iostream>

// utils
template <size_t N> …
Run Code Online (Sandbox Code Playgroud)

c++ constexpr

11
推荐指数
2
解决办法
658
查看次数

当Scala Value Class需要实例化时,有没有办法获得警告?

在有关Scala值类的文档中,提到有三种情况需要实际为实例分配一个值实例:

分配摘要

在以下情况下实际实例化值类:

  1. 值类被视为另一种类型.
  2. 值类被分配给数组.
  3. 进行运行时类型测试,例如模式匹配.

编译器或语言功能中是否有设置,当需要实例化值类时会产生警告?

scala value-class

11
推荐指数
1
解决办法
107
查看次数

使用spark DataFrame"as"方法

我正在看spark.sql.DataFrame文档.

def as(alias: String): DataFrame
    Returns a new DataFrame with an alias set.
    Since
        1.3.0 
Run Code Online (Sandbox Code Playgroud)

这种方法的目的是什么?怎么用?可以有一个例子吗?

我还没有在网上找到任何有关此方法的信息,文档也不存在.我没有设法使用这种方法制作任何类型的别名.

scala dataframe apache-spark apache-spark-sql

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

类型别名函数类型的隐式转换类无法在Scala中编译

在scala中,以下代码正确编译:

class a {}
class b {}

object Main {

  implicit class Conv[f, t](val v: f ? t) extends AnyVal {
    def conv = v
  }

  def main(args: Array[String]) {
    val m = (a: a) ? new b
    m.conv
  }
}
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,以下无法编译:

class a {}
class b {}

object Main {
  type V[f, t] = f ? t

  implicit class Conv[f, t](val v: V[f, t]) extends AnyVal {
    def conv = v
  }

  def main(args: Array[String]) {
    val m = …
Run Code Online (Sandbox Code Playgroud)

scala implicit-conversion

10
推荐指数
1
解决办法
176
查看次数

转义 makefile 变量(供内部 makefile 使用)

是否可以“安全地”扩展 makefile 中的变量,转义 makefile 认为特殊的所有字符?

例如,假设一个变量被用作目标:

${external_chaos}:
    dd if=/dev/zero of=${external_chaos}
Run Code Online (Sandbox Code Playgroud)

(例如故意的戏剧)

如果external_chaos包含空格、;#:,或其他 makefile 重要字符,那么整个规则就会混乱。

我想象的解决方案是一些应该执行此操作的 Make 内置函数,例如${escape external_chaos}(想象中的奢侈品)。

${value external_chaos} 不这样做。

variables makefile gnu-make

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