分享

spark dataframe怪异问题

nlallen 发表于 2017-2-28 11:32:59 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 8 9530
提示: 作者被禁止或删除 内容自动屏蔽

已有(8)人评论

跳转到指定楼层
qcbb001 发表于 2017-2-28 13:49:37
他们之间区别主要是参数。所用的应用程序最后的提交都是由spark-submit完成的,其他程序的调用只是对spark-submit的参数进行设置后,调用spark-submit来完成应用程序的提交到集群的操作。
Spark-Shell命令,其中它会调用main方法
20160520112020098.jpg
在mian方法中,会调用spark-submit 并传入—class的参数(入口类)为org.apache.spark.repl.Main,设置应用程序名—name “Spark shell” 传入spark-shell接收的所有参数$@。
而在Spark-submit中是通过exec命令启动进程的,如下图:
20160520112034239.jpg

回复

使用道具 举报

nlallen 发表于 2017-2-28 15:01:43
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

desehawk 发表于 2017-2-28 15:19:03
nlallen 发表于 2017-2-28 15:01
主要是上图中的语法在spark-shell中是可以用的,但是在submit的时候就是报缺括号。不知道为什么

贴出具体操作和详细错误信息来看下
回复

使用道具 举报

nlallen 发表于 2017-2-28 18:47:52
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

qcbb001 发表于 2017-2-28 18:57:30
nlallen 发表于 2017-2-28 18:47
SELECT pcode,
        ver,
        monthday,

SELECT pcode,
        ver,
        monthday,
        fncode,
        country,
        province,
        dognum,
        gid,
        mac,
        hardwareid,
        ip,
        rank() OVER (PARTITION BY pcode,ver,monthday,fncode,gid ORDER BY if(province='未知',2,1)) as rank_gid,
        rank() OVER (PARTITION BY pcode,ver,monthday,fncode,mac ORDER BY if(province='未知',2,1)) as rank_mac,
        rank() OVER (PARTITION BY pcode,ver,monthday,fncode,hardwareid ORDER BY if(province='未知',2,1)) as rank_hardwareid,
        rank() OVER (PARTITION BY pcode,ver,monthday,fncode,ip ORDER BY if(province='未知',2,1)) as rank_ip
        FROM
            (SELECT pcode,
                    ver,
                    monthday,
                    fncode,
                    country,
                    province,
                    dognum,
                    gid,
                    mac,
                    hardwareid,
                    ip
                    FROM
                        uv_logs
                        GROUP BY pcode,ver,monthday,fncode,country,province,dognum,gid,mac,hardwareid,ip) a

上面红字部分去掉,然后在执行下

回复

使用道具 举报

nlallen 发表于 2017-2-28 19:29:08
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

qcbb001 发表于 2017-2-28 20:00:01
nlallen 发表于 2017-2-28 19:29
整个语法在spark-shell ,spark-sql,hive里面都可以正常执行。去掉就不报错了。但是也不是语法的事啊。
...

楼主先一个个添加。首先中文和英文字符不能混淆了,特别是括号,逗号等。在基本的内容没有错误的前提下,在一步步排查比如先加下面红字部分
SELECT pcode,
        ver,
        monthday,
        fncode,
        country,
        province,
        dognum,
        gid,
        mac,
        hardwareid,
        ip,
        rank() OVER (PARTITION BY pcode,ver,monthday,fncode,gid ORDER BY if(province='未知',2,1)) as rank_gid
      
        FROM
            (SELECT pcode,
                    ver,
                    monthday,
                    fncode,
                    country,
                    province,
                    dognum,
                    gid,
                    mac,
                    hardwareid,
                    ip
                    FROM
                        uv_logs
                        GROUP BY pcode,ver,monthday,fncode,country,province,dognum,gid,mac,hardwareid,ip) a
如果报错,在改成下面
        rank() OVER () as rank_gid

如果报错改成
        rank() as rank_gid


这样楼主先找到问题点。




回复

使用道具 举报

nlallen 发表于 2017-3-1 16:57:06
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条