第九课_简易电影推荐系统

第九课_简易电影推荐系统的相关问题都在下面进行提问回帖
1、大家在这个帖子上回复自己想要提的问题。(相同的问题,请点赞表示自己关注这个问题,不用重复提问)
2、提出的问题,老师在直播课的最后30分钟统一回答。
3、课后会整理出参考答案,给每个问题回帖。

hadoob - 80后

赞同来自:

sparksql 用sql语句写是系统会有一定的优化,调整参数也可以做些优化. 但sql语句本身是不是也有一定优化呢?比如说hivesql中一些优化方式的语句在sparksql中也会起些作用呢? 如果有请给几个例子,并解析为什么这样会更优,在源码层次如何能对比看到这样的优点

xmlnet

赞同来自:

老师您好,我运行您github上MovieLenseALS代码,第一次运行可以行到推荐结果,第二次运行就报错了,每次只能重新获取代码来运行,麻烦老师帮看下 (本地mac intellij Idea中debug运行)  17/05/02 20:51:05 ERROR Executor: Exception in task 0.0 in stage 396.0 (TID 1036) java.lang.StackOverflowError     at java.lang.reflect.InvocationTargetException.<init>(InvocationTargetException.java:72)     at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1058)     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1909)     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2018)     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942)     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2018)     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942)     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)     at scala.collection.immutable.List$SerializationProxy.readObject(List.scala:479)     at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1058)     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1909)     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2018)     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942)     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2018)     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942)     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)     at scala.collection.immutable.List$SerializationProxy.readObject(List.scala:479)     at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)

R.kelly

赞同来自:

老师,想问下spark-sql执行批量执行文件如何使用 --hiveconf传递参数,hql文件如何获得传递进来的参数,原来的hive传参方法好像不管用?   /usr/local/tdr_hadoop/spark/spark-1.6.0-bin-hadoop2.6/bin/spark-sql --master spark://master01:7077 --driver-class-path /usr/local/tdr_hadoop/spark/spark-1.6.0-bin-hadoop2.6/lib/mysql-connector-java-5.1.40-bin.jar --hiveconf SET_DAY=20170503 --hiveconf AREA='zhengzhou' -f /usr/local/tdr_hadoop/shell/badbiaoqian/crontab/spark/step2_m_monitor_max.hql   ============step2_m_monitor_max.hql脚本内容========== use topic1; add jar /usr/local/tdr_hadoop/hive/apache-hive-1.2.1-bin/trimid.jar; create temporary function trimid as 'cn.com.trimid'; add jar /data/source/zhujie/time2date.jar; create temporary function time2date as 'cn.com.time2date'; alter table m_monitor_max drop partition(datetime=${hiveconf:SET_DAY},area='${hiveconf:AREA}');   set mapred.job.name='badbiaoqian_step2_etl_m_tb_monitor_max';   INSERT OVERWRITE TABLE m_monitor_max partition(datetime=${hiveconf:SET_DAY},area='${hiveconf:AREA}') select distinct aa.PLATENUMBER,aa.MONITORTIME from ( select trimid(PLATENUMBER) as PLATENUMBER ,max(time2date(MONITORTIME )) as MONITORTIME from o_monitor_max where area='${hiveconf:AREA}' group by PLATENUMBER) aa

冯朝阁

赞同来自:

请教董神。我这边配置了多个hive metatore实例。我们有两个客户端 分别连接不同的metastore。当其中的一个客户端对表结构进行了更改时,另外一个客户端突然就无法再查这个表了 必须重启第二个metastore  这个问题 上节课你说会解答一下 ,谢谢。

xmlnet

赞同来自:

老师,我们的场景中会经常需要对一部分hive表进行re-process,可如果同时有他session在读取这个表时,会报文件丢失的错,请问老师有什么好的建议

贰怪兽lyn

赞同来自:

请问实时计算SparkStreaming为什么不能保证结果精确?

boyfuxin

赞同来自:

最后一节课了,感觉只学习知识远不如做一些实际的编程练习提高的多,尤其是spark rdd scala编程、spark sql,学得挺好,不练过半个月就忘了,自己也试着编数据练习一下,老师有什么好点的练习题目或demo项目或demo数据吗?

jhg22

赞同来自:

spark on hive : spark去读取hive的数据,提交到yarn上报错,一直找不到库。困惑一天了,一直找不到原因
image.png
把代码贴到spark-shell中,就能找到库,表中查询出数据。       //select * from otvcloud_wd.t_isp_info limit 10;     val warehouseLocation = "/apps/hive/warehouse/otvcloud_wd.db/"     val spark = SparkSession       .builder()       .appName("Spark Hive Example")       .config("spark.sql.warehouse.dir", warehouseLocation)       .config("spark.sql.hive.thriftServer.singleSession", "true")       .enableHiveSupport()       .getOrCreate()     import spark.implicits._     import spark.sql     sql("show databases").show     sql("use otvcloud_wd")     sql("select * from t_area_info limit 10").show
image.png
  分析:1.Spark2 Thrift Server已启动,           2.hive-site.xml也拷贝到spark-conf的目录下。
image.png
难道还要copy hdfs-site.xml和core-site.xml到spark-conf的目录下吗?  

谢国亮

赞同来自:

老师  如果用zeppelin结合spark使用,需要进行什么配置?复杂吗?请指点

冯朝阁

赞同来自:

Apache hue 和zeppelin 哪个好用些呢?

Jamesnb5

赞同来自:

Lambda architecture 问题:   1、架构选择场景1: Kafka + hdfs + spark /spark streaming : 如果使用HDFS 作为底层存储(不使用HBASE),如何保证HDFS 增量的小文件的合并,从而提高效率。   2、架构选择场景2: Kafka + HBase + spark /spark streaming : 使用HBase 作为数据存储,Spark job读取HBase的全量数据比架构选择场景1中Spark 直接读取HDFS 的效率哪个高?如何保证批处理的数据效率?   3、服务层要查所有数据的汇总的时候,如果架构选择场景2,有没有通用 的方法可以快速合并全量的数据,完成最新的数据全景视图?   4、对于全量数据的统计运算,使用Kylin 比直接使用Spark Job或者 Map Reduce Job哪个适用,或者效率高?

tl_oni

赞同来自:

zeppelin做出的分析图,能嵌入自己的WEB工程里吗?

冯朝阁

赞同来自:

spark2.1.1现在是不是支持标准sql了?

hadoob - 80后

赞同来自:

之前不是说能重新过下源码吗,可以再细点过下spark源码吗?

allen_cdh

赞同来自:

spark streaming 读kafka的数据 如何保证不多不少,正好消费1次?

冯朝阁

赞同来自:

董老师 那个metastore 不一致的情况  我们这边确实用了缓存,关掉缓存就可以解决吗?会不会对mysql数据库造成很大压力?我们是多个hivemetastore   都连接相同的mysql

jhg22

赞同来自:

在 yarn 上跑的,hive-metastore没有问题。
image.png
 

冯朝阁

赞同来自:

sparksql 我看官网 上面写 支持sql2003 的标准啊

Jamesnb5

赞同来自:

有没有成熟的Lambda architecture 例子代码 ?    各个层都实现得详细一点的,复杂一点的?

要回复问题请先登录注册